如何从今天的日期减去x天数

时间:2012-01-04 14:20:11

标签: android

我需要回顾一些项目的90天,120天和160天。我该如何编码呢? 我一直在寻找java代码但是当我为android开发时会出现错误。

我需要采取今天的日期并减去x天数,并将结果显示在屏幕上没有别的。感谢

4 个答案:

答案 0 :(得分:21)

您应该使用Calendar类:

//Calendar set to the current date 
Calendar calendar=Calendar.getInstance();
//rollback 90 days
calendar.add(Calendar.DAY_OF_YEAR, -90);
//now the date is 90 days back
Log.i("MyApp","90 days ago:"+calendar.getTime().toString());

答案 1 :(得分:7)

使用日历对象...

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -90); //etc

答案 2 :(得分:1)

TL;博士

LocalDate.now( ZoneId.of( "America/Montreal" ) )
         .minusDays( 90 )

java.time

此处的其他答案已过时。现代的方法是使用java.time类。

LocalDate

LocalDate类表示没有时间且没有时区的仅限日期的值。

时区对于确定日期至关重要。对于任何给定的时刻,日期在全球范围内因地区而异。例如,在Paris France午夜后的几分钟是新的一天,而Montréal Québec中仍然是“昨天”。

ZoneId z = ZoneId.of( "America/Montreal" ) ;
LocalDate today = LocalDate.now( z ) ;

然后您可以添加或减去天数。

LocalDate ago090 = today.minusDays( 90 ) ;
LocalDate ago120 = today.minusDays( 120 ) ;
LocalDate ago160 = today.minusDays( 160 ) ;

要生成标准ISO 8601格式YYYY-MM-DD的字符串,请致电toString。对于其他格式,请搜索DateTimeFormatter类的Stack Overflow以查看许多示例和讨论。

String output = ago120.toString() ;

关于java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

从哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore

答案 3 :(得分:0)

您应该可以使用Calendar课程来实现您的目标:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Calendar.html

然后,您可以使用当前日期.add(Calendar.DAY_OF_YEAR, -90);调用日历对象,依此类推。