在java中查找最近30天,60天和90天

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (418)

如何获得从java给定日期的最后30/60/90天记录?

我有一些receivedDate记录。我想从收到的日期中获取最近30天或60天或90天的记录。如何解决?

提问于
用户回答回答于

使用java.util.Calendar

Date today = new Date();
Calendar cal = new GregorianCalendar();
cal.setTime(today);
cal.add(Calendar.DAY_OF_MONTH, -30);
Date today30 = cal.getTime();
cal.add(Calendar.DAY_OF_MONTH, -60);
Date today60 = cal.getTime();
cal.add(Calendar.DAY_OF_MONTH, -90);
Date today90 = cal.getTime();
用户回答回答于

捆绑的java.util.Date&.Calendar类组是非常麻烦的。你应该避免他们。

Joda-Time

以下是使用Joda-Time 2.3库的LocalDate类的一些示例代码。

LocalDate now = LocalDate.now();
LocalDate thirty = now.minusDays( 30 );
LocalDate sixty = now.minusDays( 60 );
LocalDate ninety = now.minusDays( 90 );

转储到控制台...

System.out.println( "now: " + now );
System.out.println( "thirty: " + thirty );
System.out.println( "sixty: " + sixty );
System.out.println( "ninety: " + ninety );

当运行...

now: 2014-03-26
thirty: 2014-02-24
sixty: 2014-01-25
ninety: 2013-12-26

时区

一天的开始和结束取决于你的时区。巴黎的新一天比蒙特利尔早。

默认情况下,LocalDate类使用你的JVM的默认时区来确定当前日期。或者,你可以传递一个DateTimeZone对象。

LocalDate localDate = new LocalDate( DateTimeZone.forID( "Europe/Paris" ) );

java.time

Java 8带来了新的内置java.time包。这些新类意味着替换旧的捆绑java.util.Date/Calendar类。java.time类受到JSR 310定义的Joda-Time的启发。

在这个问题的特定情况下,上面为Joda-Time所看到的示例代码与java.time所需的代码完全相同。只有import陈述会有所不同。

扫码关注云+社区

领取腾讯云代金券