我想得到当前日期,然后将当前日期加上某一个整数,得到下一个日期,我今天在测试过程中发现Date类不好用,今天是2005-01-14,我想得到前28天的日期,我写了个方法:
//传入一个int的时间,经和当前日期相加或者相减,得到一个新日期
// public static String strToDateByInt(int i, String operator) {
// long j = 0;
// long tmp;
//
// Date d = new Date();
//
// tmp = (long)(d.getTime()/24 * 3600 * 1000);
//
// if ("-".equals(operator)) {
// j = d.getTime() - i * 24 * 3600 * 1000;
//
// } else if ("+".equals(operator)) {
// j = d.getTime() + i * 24 * 3600 * 1000;
// }
// Date a = new Date(j);
//
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//
// // System.out.println(sdf.format(a));
// return sdf.format(a);
//
// }
结果当我调用这个方法时候,得到的结果竟然是2005-02-07,而这个数值在25-51之间时结果就不对(感谢认真的测试人员!)。
不得已,我查了些资料,将方法改写如下:
public static String strToDateByInt(int i, String operator) {
long j = 0;
Date d = new Date();
// System.out.println("Y=" + d.getYear() + 1900);
// System.out.println("M=" + d.getMonth());
// System.out.println("Day=" + d.getDay());
// System.out.println("Date=" + d.getDate());
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(d);
System.out.println(d.getTime());
if ("+".equals(operator)) {
gc.add(GregorianCalendar.DATE, i);
} else if ("-".equals(operator)) {
gc.add(GregorianCalendar.DATE, (-i));
}
Date a = gc.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(a);
}
然后就可以了,其实这样解决也可以,但是让我讨厌的是这么长的类名,感觉有些变态!
而且上面的注释掉的代码// System.out.println("Day=" + d.getDay()); 打印出来并不是日期中的天,而是星期几!!!!!!!!!!!
感觉Java开发真是挺费劲的,而且随着演化,好像越来越复杂,今天的输入法不好用,就写到这里了!!!