Today is 2014-04-06 - SUNDAY.
Output using below code is :-
Start Date = 2014-04-07
End Date = 2014-04-13
I want Output as :-
Start Date = 2014-03-31
End Date = 2014-04-06
// Get calendar set to current date and time
Calendar c = GregorianCalendar.getInstance();
System.out.println("Current week = " + Calendar.DAY_OF_WEEK);
// Set the calendar to monday of the current week
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println("Current week = " + Calendar.DAY_OF_WEEK);
// Print dates of the current week starting on Monday
DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
String startDate = "", endDate = "";
startDate = df.format(c.getTime());
c.add(Calendar.DATE, 6);
endDate = df.format(c.getTime());
System.out.println("Start Date = " + startDate);
System.out.println("End Date = " + endDate);
解决方案
I believe that simply using:
c.setFirstDayOfWeek(Calendar.MONDAY);
will resolve your issue... :)
EXPLANATION:
In my opinion, right now, your first day of week seems to be set on Calendar.SUNDAY. I believe that this depends on your Locale.
Thus, a (better?) alternative would be to initialise your Calendar specifying the Locale you're interested in...
For example:
Calendar c = GregorianCalendar.getInstance(Locale.US);
... will give you your current output, while:
Calendar c = GregorianCalendar.getInstance(Locale.FRANCE);
... will give you your expected output ;)