我试图获取前30天的当前日期和时间..但是,它不是别的东西
new Date(System.currentTimeMillis() - 30 * 24 * 60 * 60 * 1000)
这是返回
Tue Jul 21 04:41:20 IST 2015
有什么不对吗
答案 0 :(得分:6)
从来没有,永远不会做System.currentTimeMillis() - 30 * 24 * 60 * 60 * 100
这样的事情,有太多的时间操纵规则,这种事情永远不会有效
LocalDateTime ldt = LocalDateTime.now().minusDays(30);
哪个输出2015-06-01T16:15:54.868
LocalDateTime ldt = new LocalDateTime();
ldt = ldt.minusDays(30);
哪个输出2015-06-01T16:18:22.489
如果你真的很绝望
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -30);
Date date = cal.getTime();
哪个输出Mon Jun 01 16:19:45 EST 2015
答案 1 :(得分:1)
您可以使用Apache Commons Library (commons-lang)。
Date currentDate = new Date();
Date dateBefore30Days = DateUtils.addDays(currentDate, -30);
有关详细信息,请参阅此链接:http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateUtils.html
答案 2 :(得分:0)
您提供的代码new Date(System.currentTimeMillis() - 30 * 24 * 60 * 60 * 1000)
可能会给出错误的结果,因为它不会考虑Java实现的任何日期/时间逻辑。这将只给出数学上正确的结果,但不能给出逻辑上正确的结果。
您可以在不使用任何外部库的情况下使用java.util.Calendar
类。
Calendar calendar = Calendar.getInstance(); // get Calendar Instance
calendar.add(Calendar.DATE, -30); // add -30 days as you need to subtract 30 days
Date dateRequired = calendar.getTime(); // get the new date from modified cal object.