我从星期一开始每周工作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]);
}
答案 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
从这个帖子中获取
答案 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]);
}