Android 设置日历并添加1天

Android 设置日历并添加1天,android,android-calendar,Android,Android Calendar,我有一个字符串,例如10月15日星期三,然后我必须得到这一天的第二天。我有一个方法,我用做这件事,但在本月之后,它抛出了错误的日期。方法如下: public String getNextDay(String lastDate) { String[] wholedate = lastDate.split("\\s+"); String datemon = wholedate[0]; String date = wholedate[1]; String dateday

我有一个字符串,例如10月15日星期三,然后我必须得到这一天的第二天。我有一个方法,我用做这件事,但在本月之后,它抛出了错误的日期。方法如下:

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;
}

也许我把日期设置错了,或者我需要为日期设置更多,或者也许有更好的方法。非常感谢。

如果我是你,我会喜欢这个

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());

我的简单解决方案是调用Calendar.getTimeInMillis来获取UTC时间戳,向其添加24x60x60x1000毫秒,然后将其放入另一个日历中


这种方法不需要其他额外步骤。它应该是无错误的,尽管效率可能有点低。然而,我把简单性作为第一要务。

我终于知道如何做到这一点,不设置星期几。由于某种原因,它把日期弄乱了。所以现在,我只是一个月一个月地设定日期,我工作得很好。谢谢你们。

怎么了?我需要的日期格式是MMM dd cccc,我有数据设置为日期。