如何在不超过一个月的可用日期的情况下将7天添加到当前日期?

时间:2011-10-04 21:18:29

标签: java android calendar

我想要获得今天的今天。

我想要做的是在数字上加7天,然后在当月的当天加上。

此外,我希望它能够进入下个月。让我们说今天是29日。当它增加7天时,我怎样才能使它下个月如29 + 7等于下个月的第5个月。

我将如何做到这一点?

我已经设法获得当前日期。

Calendar cal = Calendar.getInstance();
    int day = cal.get(Calendar.DAY_OF_MONTH);
    int dayOfMonth = day;
    String today = getToday();

我正在使用它,因为我想每隔7天在我的主要活动中启动一个asynctask。

8 个答案:

答案 0 :(得分:30)

add(Calendar.DAY_OF_MONTH, 7);

来自Calendar JavaDoc

答案 1 :(得分:8)

Calendar的add方法为您完成此操作: cal.add(Calendar.DATE, 7);

编辑: 鉴于扩展评论,我想我应该补充说明,如果cal从2011年10月4日开始,我致电cal.add(Calendar.DATE, 7) cal的新值是2011年10月11日同样,如果cal从2025年3月29日开始,那么在cal.add(Calendar.DATE, 7)之后cal的新值是2025年4月5日。

答案 2 :(得分:7)

您必须使用日历的添加方法。

cal.add(Calendar.DAY_OF_MONTH, 7);

答案 3 :(得分:4)

cal.add(Calendar.DAY_OF_MONTH,7);

答案 4 :(得分:3)

TL;博士

LocalDate.now( ZoneId.of( "America/Montreal" ) )  // Today’s date.
         .plusWeeks( 1 )   // Yields `LocalDate` object
         .getDayOfMonth()  // Yields `int` number

java.time

Java 8及更高版本附带了java.time框架。这些新类取代了旧的java.util.Date / .Calendar类。对于较旧的Android,请参阅下面描述的 ThreeTen-Backport ThreeTenABP 项目。

这些类包括LocalDate类,用于何时只需要一个没有时间和没有时区的日期。但请注意,在东部早些时候开始新的一天时,时区对于确定当前日期至关重要。

ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zoneId );
LocalDate weekLater = today.plusWeeks( 1 ); // Automatically rolls over between months, no problem.

如果需要,您可以询问LocalDate对象for its day-of-month number

int dayOfMonth = weekLater.getDayOfMonth();

关于java.time

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

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

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

大部分java.time功能都被反向移植到Java 6& ThreeTen-Backport中的7,并进一步适应Android中的ThreeTenABP(见How to use…)。

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

约达时间

更新:Joda-Time项目现在处于维护模式。该团队建议迁移到java.time类。我将此部分保留为历史记录。

在没有Java 8技术的Android中,您可以将Joda-Time库添加到项目中。但是要知道Joda-Time项目处于维护模式并建议迁移到java.time类(请参阅上面的Android上的ThreeTenABP)。

Joda-Time为java.time提供了灵感。在这种情况下,所需的代码非常相似。

DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
LocalDate today = LocalDate.now( zone );
LocalDate weekLater = today.plusWeeks( 1 ); // Automatically rolls over between months, no problem.
int dayOfMonth = weekLater.getDayOfMonth();

答案 5 :(得分:2)

使用GregorianCalendar.add(Calendar.DATE,7)。 GregorianCalendar类将负责将日期滚动到下个月。

答案 6 :(得分:2)

    Date m = new Date();
    Calendar cal = Calendar.getInstance();  
    cal.setTime(m);  
    cal.add(Calendar.DATE, 10); // 10 is the days you want to add or subtract   
    m = cal.getTime();   
    System.out.println(m);

答案 7 :(得分:0)

Date newDate = new Date(current timestamp in millis + 604800000L);//after 7 days