从当天开始接下来的7天

时间:2013-12-08 17:52:46

标签: java android android-calendar

我从星期一开始每周工作7天。但在我的项目中,我希望从当天开始接下来的7天。 示例:如果今天是星期一09/12/2013。列表如下:

Monday, 09/12/2013
Tuesday, 10/12/2013
Wednesday, 11/12/2013
Thursday, 12/12/2013
Friday, 13/12/2013
Saturday, 14/12/2013
Sunday, 15/12/2013

下一篇:如果今天是2013年12月10日星期二。列表如下:

Tuesday, 10/12/2013
Wednesday, 11/12/2013
Thursday, 12/12/2013
Friday, 13/12/2013
Saturday, 14/12/2013
Sunday, 15/12/2013
Monday, 16/12/2013

我的代码从周一开始,每周工作7天

SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Calendar date = Calendar.getInstance();
date.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
/*
* Get Date in 7 days
*/
for(int i = 0; i < 7;i++){
    Calendar[i] = format.format(date.getTime());
    date.add(Calendar.DATE  , 1);
    System.out.println("date :" + Calendar[i]);
}

4 个答案:

答案 0 :(得分:2)

String dt = "2008-01-01";  // Start date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(sdf.parse(dt));
c.add(Calendar.DATE, 7);  // number of days to add
dt = sdf.format(c.getTime());  // dt is now the new date

从这个帖子中获取

How can I increment a date by one day in Java?

答案 1 :(得分:1)

您可以准确地保留代码,只需删除您的固定电话即可。当您为日历调用getInstance时,您将获得一个设置为当前日期和时间的日历实例。

例如:

SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Calendar date = Calendar.getInstance();

for(int i = 0; i < 7;i++){
    Calendar[i] = format.format(date.getTime());
    date.add(Calendar.DATE  , 1);
    System.out.println("date :" + Calendar[i]);
}

答案 2 :(得分:1)

其他答案都是正确的。

约达时间

为了好玩,我使用Joda-Time 2.3库进行了相同类型的代码。

当天的第一时刻

请注意对withTimeAtStartOfDay()的来电。使用日期时间值但关注日期部分时,将时间设置为当天的第一时刻是一种很好的做法。注意:永远不要将时间设置为全零 - 该时间可能不存在,因为Daylight Savings Time(夏令时)可以将时钟推到午夜。

获得当天的第一时刻的一个原因只是为了避免它,以避免可能的异常或滚动到另一天的问题。另一个原因是使代码自我记录,表明我们的目的是关注日期而不是时间。

仅限日期

如果真正只想要日期,请改用Joda-Time的LocalDate课程。但请三思而后行。通常当人们天真地认为他们只想要约会时,他们实际上需要约会时间。

示例代码

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;

DateTime today = new DateTime().withTimeAtStartOfDay();

// ISO 8601 format
for(int i=0; i<7; i++){
    System.out.println( today.plusDays( i ).withTimeAtStartOfDay() );
}

// User's default "short" format.
for(int i=0; i<7; i++){
    System.out.println( DateTimeFormat.shortDate().print( today.plusDays( i ) ) );
}

// Specific format demanded by the StackOverflow.com question.
DateTimeFormatter formatter = DateTimeFormat.forPattern( "dd/MM/yyyy" );
for(int i=0; i<7; i++){
    System.out.println( formatter.print( today.plusDays( i ) ) );
}

跑步时......

2013-12-08T00:00:00.000-08:00
2013-12-09T00:00:00.000-08:00
2013-12-10T00:00:00.000-08:00
2013-12-11T00:00:00.000-08:00
2013-12-12T00:00:00.000-08:00
2013-12-13T00:00:00.000-08:00
2013-12-14T00:00:00.000-08:00
12/8/13
12/9/13
12/10/13
12/11/13
12/12/13
12/13/13
12/14/13
08/12/2013
09/12/2013
10/12/2013
11/12/2013
12/12/2013
13/12/2013
14/12/2013

答案 3 :(得分:0)

SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
String[] days = new String[7];
for(int i = 0; i < 7;i++){
    days[i] = format.format(calendar.getTime());
    calendar.add(Calendar.DATE  , 1);
    Log.d("Days" + i, "date :" + days[i]);
}