需求:取得当前时间前一周的时间。比如说:今天是2009-4-23,运行结果则为:2009-4-16。
代码:一般人肯定会这样写:
String lastModified = new
java.text.SimpleDateFormat("yyyy-MM-dd").format(new
java.util.Date((new java.util.Date().getTime() - 7 * 24 * 60 * 60 *
1000)));
表面上看结果是正确的。
问题:如果想取得当前时间前一个月的时间,直接修改上面的7为30,形如:30 * 24 * 60 * 60 *
1000,结果肯定不是你想要的2009-3-24。而是2009-5-13!你没看错!
原因:java日期的数值表达值为long类型的,应该用long型参数去做操作。7 * 24 * 60 * 60 *
1000默认为整型操作,它没有溢出;但30 * 24 * 60 * 60 *
1000对于整型来说是溢出的,变成负数,所以日期反而加大。
解决:
String lastModified = new
java.text.SimpleDateFormat("yyyy-MM-dd").format(new
java.util.Date((new java.util.Date().getTime() - (long)30 * 24 * 60
* 60 * 1000)));
这样写就可以解决问题了。