2016-05-06 55 views
3

使用日历我试图让周一的日使用下面的代码(今天是2016年5月6日)获取周一的日期不正确设置一周的第一天之后,周一时的Android

Calendar calendar1 = Calendar.getInstance(); 
calendar1.setFirstDayOfWeek(Calendar.MONDAY); 
calendar1.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
calendar1.getTime(); 

但结果是2016/4/25,结果应该是2016/5/2,似乎只是错在五月

而且它的工作正确下面

Calendar calendar1 = Calendar.getInstance(); 
calendar1.setFirstDayOfWeek(Calendar.MONDAY); 
calendar1.setTime(new Date()); 
calendar1.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
calendar1.getTime(); 

但是,当我尝试以下

public static Calendar createCalendar(Date date, int firstDayOfWeek) { 
    Calendar calendar = Calendar.getInstance(); 
    if (date == null) return calendar; 
    calendar.setFirstDayOfWeek(firstDayOfWeek); 
    calendar.setTime(date); 
    return calendar; 
    } 

    public static Calendar[] getWeekStartEnd(Date date) { 
    Calendar[] calendars = new Calendar[2]; 
    Calendar calendar = createCalendar(date, Calendar.MONDAY); 
    Calendar tempCalendar1 = createCalendar(date, Calendar.MONDAY); 

    calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
    tempCalendar1.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 

    calendars[0] = calendar; 
    calendars[1] = tempCalendar1; 
    return calendars; 
    } 

它仍然无法正常工作正确 我想知道

+0

请参阅此链接[链接](http://stackoverflow.com/questions/7299621/android-calendar-problem-with-day-of-the-week) – Sabari

回答

0

可能需要本周的第一天的原因(假设当前日期==> 2016年5月5日 所以你可能需要1一天==> 2016年5月2日是星期一,然后)

Calendar calendar = Calendar.getInstance(); 
// get device day 
SimpleDateFormat formatter = new SimpleDateFormat("EEE"); 
String devicedaystring = formatter.format(calendar.getTime()); 
//get Device date 
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd"); 
String devicedatestring = f.format(calendar.getTime()); 

String current_date = checkday(devicedatestring, devicedaystring); 
// To Convert String date to Date object 
SimpleDateFormat f1 = new SimpleDateFormat("yyyy-MM-dd"); 
Date date = f1.parse(current_date); 

private String checkDay(String date, String day) 
    { 
     if(day.equalsIgnoreCase("MON")) 
     { 
      return date; 
     } 
     else 
     { 
      SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd"); 
      String[] ss=date.split("-"); 
      int yy = Integer.parseInt(ss[0]); 
      int MM = Integer.parseInt(ss[1]); 
      int dd = Integer.parseInt(ss[2]); 
      Calendar calendar = Calendar.getInstance(); 
      calendar.set(yy,MM-1,dd); 
      calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
      date = f.format(calendar.getTime()); 
      Logger.showVerboesLog("~~~", "First Day of Week === " +date); 
      return date; 
     } 
    } 
0

试试这个:

Calendar calendar1 = Calendar.getInstance(); 
       calendar1.setFirstDayOfWeek(Calendar.MONDAY); 
       calendar1.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
       calendar1.setTime(new Date()); 
       calendar1.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
       calendar1.getTime(); 
+0

是的,它的作品,但我想知道为什么? – littlegnal

+0

我发现无论'calendar1.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY)'设置了两次,我都应该更新我的问题 – littlegnal

+0

'cale1.setTime(new Date())'我不知道原因。在逐行调试代码时,它运行良好。但是,在运行相同的代码时,它将返回上周的星期一日期。 – Sabari

相关问题