2011-10-12 139 views
2

我需要在Android中開始和結束本週的開始和結束日期。Android中本週開始和結束日期的日期爲

例子

today: Oct 12 2011 -> result: Oct 10 2011 - Oct 16 2011 

today: Oct 1 2001 -> result: Sep 26 2011 - Oct 2 2011 

today: Dec 30 2011 -> result: Dec 24 2001 - Jan 1 2011 

使用c.get(Calendar.WEEK_OF_YEAR);我能得到週數,但如何讓開始&末的數據?我在這裏找到了一個答案,指向MonthDisplayHelper但是,如何使用它?

謝謝!

+1

你試過c.set(Calendar.DAY_OF_WEEK,1)嗎? – njzk2

+0

工作感謝:) – SimoneB

+0

你能否請詳細提及解決方案..我被困在相同的 – AndroidGuy

回答

6

使用此sintax和它的工作

Calendar c1 = Calendar.getInstance(); 

    //first day of week 
    c1.set(Calendar.DAY_OF_WEEK, 1); 

    int year1 = c1.get(Calendar.YEAR); 
    int month1 = c1.get(Calendar.MONTH)+1; 
    int day1 = c1.get(Calendar.DAY_OF_MONTH); 

    //last day of week 
    c1.set(Calendar.DAY_OF_WEEK, 7); 

    int year7 = c1.get(Calendar.YEAR); 
    int month7 = c1.get(Calendar.MONTH)+1; 
    int day7 = c1.get(Calendar.DAY_OF_MONTH); 
2

這是給你的好榜樣,因爲它表明你想正確的日期:01 - 07 Jan8 - 15 Jan ...等...通過按下退按鈕&前進按鈕相對。

p/s:請根據需要編輯日期格式。

public static String getLastWeek(Calendar mCalendar) { 
     // Monday 
     mCalendar.add(Calendar.DAY_OF_YEAR, -13); 
     Date mDateMonday = mCalendar.getTime(); 

     // Sunday 
     mCalendar.add(Calendar.DAY_OF_YEAR, 6); 
     Date mDateSunday = mCalendar.getTime(); 

     // Date format 
     String strDateFormat = "dd MMM"; 
     SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); 

     String MONDAY = sdf.format(mDateMonday); 
     String SUNDAY = sdf.format(mDateSunday); 

     // Substring 
     if ((MONDAY.substring(3, 6)).equals(SUNDAY.substring(3, 6))) { 
      MONDAY = MONDAY.substring(0, 2); 
     } 

     return MONDAY + " - " + SUNDAY; 
    } 

public static String getCurrentWeek(Calendar mCalendar) { 
     Date date = new Date(); 
     mCalendar.setTime(date); 

     // 1 = Sunday, 2 = Monday, etc. 
     int day_of_week = mCalendar.get(Calendar.DAY_OF_WEEK); 

     int monday_offset; 
     if (day_of_week == 1) { 
      monday_offset = -6; 
     } else 
      monday_offset = (2 - day_of_week); // need to minus back 
     mCalendar.add(Calendar.DAY_OF_YEAR, monday_offset); 

     Date mDateMonday = mCalendar.getTime(); 

     // return 6 the next days of current day (object cal save current day) 
     mCalendar.add(Calendar.DAY_OF_YEAR, 6); 
     Date mDateSunday = mCalendar.getTime(); 

     //Get format date 
     String strDateFormat = "dd MMM"; 
     SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); 

     String MONDAY = sdf.format(mDateMonday); 
     String SUNDAY = sdf.format(mDateSunday); 

     // Sub String 
     if ((MONDAY.substring(3, 6)).equals(SUNDAY.substring(3, 6))) { 
      MONDAY = MONDAY.substring(0, 2); 
     } 

     return MONDAY + " - " + SUNDAY; 
    } 

public static String getNextWeek(Calendar mCalendar) { 
     // Monday 
     mCalendar.add(Calendar.DAY_OF_YEAR, 1); 
     Date mDateMonday = mCalendar.getTime(); 

     // Sunday 
     mCalendar.add(Calendar.DAY_OF_YEAR, 6); 
     Date Week_Sunday_Date = mCalendar.getTime(); 

     // Date format 
     String strDateFormat = "dd MMM"; 
     SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); 

     String MONDAY = sdf.format(mDateMonday); 
     String SUNDAY = sdf.format(Week_Sunday_Date); 

     // Sub string 
     if ((MONDAY.substring(3, 6)).equals(SUNDAY.substring(3, 6))) { 
      MONDAY = MONDAY.substring(0, 2); 
     } 

     return MONDAY + " - " + SUNDAY; 
    } 
0

這裏是很好的示例代碼,它給你一年中的當前周以及本週開始和結束日期,只是你需要做的是設置一週的代碼開始的第一天,在我來說,我將它設置爲SUNDAY,

// get Current Week of the year 
    calendar=Calendar.getInstance(); 
    Log.v("Current Week", String.valueOf(calendar.get(Calendar.WEEK_OF_YEAR))); 
    int current_week=calendar.get(Calendar.WEEK_OF_YEAR); 
    int week_start_day=calendar.getFirstDayOfWeek(); // this will get the starting day os week in integer format i-e 1 if monday 
    Toast.makeText(getContext(),"Current Week is"+current_week +"Start Day is"+week_start_day,Toast.LENGTH_SHORT).show(); 


    // get the starting and ending date 
    // Set the calendar to sunday of the current week 
    calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); 
    System.out.println("Current week = " + Calendar.DAY_OF_WEEK); 

    // Print dates of the current week starting on Sunday 
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); 
    String startDate = "", endDate = ""; 

    startDate = df.format(calendar.getTime()); 
    calendar.add(Calendar.DATE, 6); 
    endDate = df.format(calendar.getTime()); 

    System.out.println("Start Date = " + startDate); 
    System.out.println("End Date = " + endDate); 
1

按照此代碼,這將幫助您找到開始日期和當前星期的最後日期。其工作在我身邊。

Calendar calendar = Calendar.getInstance(); 

    Date date1 = calendar.getTime(); 
    SimpleDateFormat checkformate = new SimpleDateFormat("MM/yyyy"); 
    String currentCheckdate = checkformate.format(date1); 

    int weekn = calendar.get(Calendar.WEEK_OF_MONTH); 
    int month = calendar.get(Calendar.MONTH); 
    int year = calendar.get(Calendar.YEAR); 

    calendar.clear(); 
    calendar.setFirstDayOfWeek(Calendar.MONDAY); 
    calendar.set(Calendar.WEEK_OF_MONTH, weekn); 
    calendar.set(Calendar.MONTH, month); 
    calendar.set(Calendar.YEAR, year); 

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); 

    Date datef = calendar.getTime(); 
    Long time = calendar.getTimeInMillis() + 518400000L; 
    Date dateL = new Date(time); 
    String firtdate = simpleDateFormat.format(datef); 
    String lastdate = simpleDateFormat.format(dateL); 
    String firtdateCheck = checkformate.format(datef); 
    String lastdateCheck = checkformate.format(dateL); 


    if (!firtdateCheck.toString().equalsIgnoreCase(currentCheckdate)) { 
    firtdate = calendar.get(Calendar.YEAR) + "-" + calendar.get(Calendar.MONTH) + "-" + "1"; 
    } 

    if (!lastdateCheck.toString().equalsIgnoreCase(currentCheckdate)) { 

    int ma = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); 
    lastdate = calendar.get(Calendar.YEAR) + "-" + calendar.get(Calendar.MONTH) + "-" + String.valueOf(ma); 
    } 
    endDate = lastdate.toString(); 
    startDate = firtdate.toString(); 
相關問題