在java中获取前30天的开始时间

Sye*_*yed 3 java

我试图获得前30天的当前日期和时间..但是,它不是别的东西

new Date(System.currentTimeMillis() - 30 * 24 * 60 * 60 * 1000)
Run Code Online (Sandbox Code Playgroud)

这是回归

Tue Jul 21 04:41:20 IST 2015
Run Code Online (Sandbox Code Playgroud)

有没有错

Mad*_*mer 6

从来没有,永远不会做任何类似的事情System.currentTimeMillis() - 30 * 24 * 60 * 60 * 100,有太多的时间操纵规则,这种事情永远不会有效

Java 8的Time API

LocalDateTime ldt = LocalDateTime.now().minusDays(30);
Run Code Online (Sandbox Code Playgroud)

哪个输出 2015-06-01T16:15:54.868

JodaTime

LocalDateTime ldt = new LocalDateTime();
ldt = ldt.minusDays(30);
Run Code Online (Sandbox Code Playgroud)

哪个输出 2015-06-01T16:18:22.489

日历

如果你真的很绝望

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -30);
Date date = cal.getTime();
Run Code Online (Sandbox Code Playgroud)

哪个输出 Mon Jun 01 16:19:45 EST 2015

  • @theRoot我不这么认为,正如安德烈在评论中指出的那样,它更有可能遇到整数溢出问题,但话说回来,这样的毫秒操作永远不是一个好主意,总有60秒一分钟,一小时60分钟,一天24小时.日期/时间如此紧张,实际上一年365.25天,一个月30.4375天,一个月4.348214285714286周......对不起,但这只是搞砸了.最好使用专用库并保存您的理智 (2认同)