如题,想要在后台获取两年后的今天的日期,这个好像考虑到闰年啦什么的,可能会使日期不准确。因此,大家有没有好的方法,借来一用。

解决方案 »

  1.   

    想正规些,就用 Calendar,里面提供对 年、月、日 等 做 add() 运算。
      

  2.   

    想再懒点,就用apache的jar包: commons-lang.jar
    里面的DateUtils有方法可以直接对年/月/日/时/分/秒  进行加减..  方便又快捷..
      

  3.   

    根据大家的提示可以获得这样的结果,格式是“yyMMddHHmm”:    public static String twoYearsTime(String fmt) {
    Calendar cal = new GregorianCalendar();
    int year = cal.get(Calendar.YEAR)+2;//yy  直接计算年数+2
    int month = cal.get(Calendar.MONTH) + 1;//MM
    int day = cal.get(Calendar.DATE);//dd
    int hour = cal.get(Calendar.HOUR_OF_DAY);//HH
    int minute = cal.get(Calendar.MINUTE);//mm

    if (fmt.indexOf("yy") != -1) {
    fmt = fmt.replaceAll("yy", String.valueOf(year).substring(2));
    }
    if (fmt.indexOf("MM") != -1) {
    fmt = fmt.replaceAll("MM", month < 10 ? "0" + String.valueOf(month)
    : String.valueOf(month));
    }
    if(fmt.indexOf("HH")!=-1){
    fmt = fmt.replaceAll("HH", hour<10 ? "0" + String.valueOf(hour):String.valueOf(hour));
    }
    if (fmt.indexOf("dd") != -1) {
    fmt = fmt.replaceAll("dd", day < 10 ? "0" + String.valueOf(day)
    : String.valueOf(day));
    }
    if (fmt.indexOf("mm") != -1) {
    fmt = fmt.replaceAll(
    "mm",
    minute < 10 ? "0" + String.valueOf(minute) : String
    .valueOf(minute));
    }
    return fmt;
    }

    public static void main(String[] args) {
       String time = twoYearsTime("yyMMddHHmm");//预定格式为yyMMddHHmm
       System.out.println(time);
    }
      

  4.   

    Date date = new Date();
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Calendar canlandar = Calendar.getInstance();
    canlandar.setTime(date);
    canlandar.add(canlandar.SECOND,10 );
    String syncTime=df.format(canlandar.getTime()).toString();
    System.out.println(syncTime);canlandar.SECOND  这个是常量,可以设置 时分秒都行,后面就是加多少了,负数就是往前算 
      

  5.   

    还有这个更简单一点:    public static void main(String[] args) {
       //String time = twoYearsTime("yyMMddHHmm");
    String time = getYear();
       System.out.println(time);
    }

    public static String getYear(){
    Calendar cal = Calendar.getInstance();
    cal.add(0, 2);
    String cur = getCalendarForFormat(cal, "yyMMddHHmm");//当然这个地方有我的一个转换方法~~
    return cur;

    }
      

  6.   

    这个是3楼的朋友提供的方法,也非常的简单。
    这个要引入新的jar
    import org.apache.commons.lang.time.DateUtils;   public static String getYear1(){
    Date curdate = DateUtils.add(new Date(), 0, 2);
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyMMddHHmm");
    String s = simpleDateFormat.format(curdate);
    return s;
    }

    public static void main(String[] args) {
       //String time = twoYearsTime("yyMMddHHmm");
       //String time = getYear();
         String time = getYear1();
        System.out.println(time);
    }
      

  7.   

    上面的后两个方法有问题,现做纠正和总结。
    三种解决时间运算的问题方法。       //第一种:比较麻烦啊,不过很清楚的思路
       public static String twoYearsTime(String fmt) {
    Calendar cal = new GregorianCalendar();
    int year = cal.get(Calendar.YEAR)+2;//yy
    int month = cal.get(Calendar.MONTH) + 1;//MM
    int day = cal.get(Calendar.DATE);//dd
    int hour = cal.get(Calendar.HOUR_OF_DAY);//HH
    int minute = cal.get(Calendar.MINUTE);//mm

    if (fmt.indexOf("yy") != -1) {
    fmt = fmt.replaceAll("yy", String.valueOf(year).substring(2));
    }
    if (fmt.indexOf("MM") != -1) {
    fmt = fmt.replaceAll("MM", month < 10 ? "0" + String.valueOf(month)
    : String.valueOf(month));
    }
    if(fmt.indexOf("HH")!=-1){
    fmt = fmt.replaceAll("HH", hour<10 ? "0" + String.valueOf(hour):String.valueOf(hour));
    }
    if (fmt.indexOf("dd") != -1) {
    fmt = fmt.replaceAll("dd", day < 10 ? "0" + String.valueOf(day)
    : String.valueOf(day));
    }
    if (fmt.indexOf("mm") != -1) {
    fmt = fmt.replaceAll(
    "mm",
    minute < 10 ? "0" + String.valueOf(minute) : String
    .valueOf(minute));
    }
    return fmt;
    } //第二种:这个简单点,转一下你要用的格式就可以
    public static String getYear(){
    Calendar cal = Calendar.getInstance();
    cal.add(1, 2);//上面的第一个参数应该是1,表示年份
    String cur = getCalendarForFormat(cal, "yyMMddHHmm");//这个是自己写的转换格式的方法
    return cur;

    }
    //第三种:这个也很简单,不过这个要加个jar包
            //import org.apache.commons.lang.time.DateUtils;
    public static String getYear1(){
    Date curdate = DateUtils.add(new Date(), 1, 2);         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyMMddHHmm");
    String s = simpleDateFormat.format(curdate);
    return s;
    }
    //测试
    public static void main(String[] args) {
        String time = twoYearsTime("yyMMddHHmm");
        String time1 = getYear();
    String time2 = getYear1();
        System.out.println(time);
        System.out.println(time1);
        System.out.println(time2);
    }谢谢大家~~ok!