2014-09-29 63 views
0

我有一個字符串(例如10月15日星期三),那麼我必須得到這一天的第二天。我有一種方法可以用來做到這一點,但在本月之後,它會拋出錯誤的日期。這裏的方法:設置日曆並添加1天

public String getNextDay(String lastDate) { 
    String[] wholedate = lastDate.split("\\s+"); 
    String datemon = wholedate[0]; 
    String date = wholedate[1]; 
    String dateday = wholedate[2]; 

    Calendar cal = Calendar.getInstance(); 
    cal.setFirstDayOfWeek(Calendar.SUNDAY); 
    SimpleDateFormat df = new SimpleDateFormat("MMM dd cccc"); 

    int dayNo=0; 
    if (dateday.equalsIgnoreCase("Sunday")) { 
     dayNo = Calendar.SUNDAY; 
    } else if (dateday.equalsIgnoreCase("Monday")) { 
     dayNo = Calendar.MONDAY; 
    } else if (dateday.equalsIgnoreCase("Tuesday")) { 
     dayNo = Calendar.TUESDAY; 
    } else if (dateday.equalsIgnoreCase("Wednesday")) { 
     dayNo = Calendar.WEDNESDAY; 
    } else if (dateday.equalsIgnoreCase("Thursday")) { 
     dayNo = Calendar.THURSDAY; 
    } else if (dateday.equalsIgnoreCase("Friday")) { 
     dayNo = Calendar.FRIDAY; 
    } else if (dateday.equalsIgnoreCase("Saturday")) { 
     dayNo = Calendar.SATURDAY; 
    } 

    int monNo = 0; 
    if (datemon.equalsIgnoreCase("Jan")) { 
     monNo = Calendar.JANUARY; 
    } else if (datemon.equalsIgnoreCase("Feb")) { 
     monNo = Calendar.FEBRUARY; 
    } else if (datemon.equalsIgnoreCase("Mar")) { 
     monNo = Calendar.MARCH; 
    } else if (datemon.equalsIgnoreCase("Apr")) { 
     monNo = Calendar.APRIL; 
    } else if (datemon.equalsIgnoreCase("May")) { 
     monNo = Calendar.MAY; 
    } else if (datemon.equalsIgnoreCase("Jun")) { 
     monNo = Calendar.JUNE; 
    } else if (datemon.equalsIgnoreCase("Jul")) { 
     monNo = Calendar.JULY; 
    } else if (datemon.equalsIgnoreCase("Aug")) { 
     monNo = Calendar.AUGUST; 
    } else if (datemon.equalsIgnoreCase("Sep")) { 
     monNo = Calendar.SEPTEMBER; 
    } else if (datemon.equalsIgnoreCase("Oct")) { 
     monNo = Calendar.OCTOBER; 
    } else if (datemon.equalsIgnoreCase("Nov")) { 
     monNo = Calendar.NOVEMBER; 
    } else if (datemon.equalsIgnoreCase("Dec")) { 
     monNo =Calendar.DECEMBER; 
    } 

    cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(date)); 
    cal.set(Calendar.MONTH, monNo); 
    cal.set(Calendar.DAY_OF_WEEK, dayNo); 

    cal.add(Calendar.DATE, 1); 
    String fd = df.format(cal.getTime()); 

    return fd; 
} 

也許我設置日期錯誤或者我可能需要設置更多的日期,或者有更好的方法來做到這一點。非常感謝。

回答

0

如果我是你,我會做這樣的

Calendar c = Calendar.getInstance(); 

c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 

SimpleDateFormat df = new SimpleDateFormat("EEEE dd-MMM-yyyy", Locale.ENGLISH); 

c.add(Calendar.DATE, 1); 

String nextDate = df.format(c.getTime()); 
+0

Whut?我需要的日期格式是「MMM dd cccc」,我有數據設置爲日期。 – 2014-09-29 05:30:20

0

我簡單的解決方法是調用Calendar.getTimeInMillis()來獲取UTC時間戳,加24x60x60x1000毫秒到它,然後把它放到另一個日曆。

此方法不需要其他額外的步驟。它應該沒有錯誤,但效率可能有點差。但是,我把簡單作爲第一要務。

+0

請重新閱讀此問題。謝謝 :) – 2014-09-29 05:31:13

0

我終於知道如何做到這一點,不設定星期幾。出於某種原因,它會混淆日期。所以現在,我只設置day_of_month和month,並且我工作正常。感謝你們。