Java - 知道给定字符串的星期几

Java - Know the day of the week of the given String

在 android 中,我有一个 "2015-03-30T12:30:00" 格式的字符串,我想知道它是星期几。

同一天使用设备进行测试,具有该功能 dayOfweek = 5dayOfWeek2 = 2 为什么?

如果我尝试创建一个包含年、月、日的新日期,它的说法已被弃用...

public int devolverDia(String hora)
{
    hora = hora.substring(0, 10);
    String weekdays[] = new DateFormatSymbols(Locale.ENGLISH).getWeekdays();
    Calendar c = Calendar.getInstance();

    int year = Integer.parseInt(hora.substring(0, 4));
    int month = Integer.parseInt(hora.substring(5, 7));
    int day = Integer.parseInt(hora.substring(8, 10));

    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, month);
    c.set(Calendar.DAY_OF_MONTH, day);

    int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);


    c.setTime(new Date());
    int dayOfWeek2 = c.get(Calendar.DAY_OF_WEEK);


    return dayOfWeek;
}

您没有得到预期日期的原因是行

c.set(Calendar.MONTH, month);

需要从 0(一月)到 11(十二月)的月份数字。如果将其替换为

c.set(Calendar.MONTH, month - 1);

此代码可以工作。

但是,更好的解决方案是使用 SimpleDateFormat classparse 方法将 String 转换为 Date

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
c.setTime(format.parse(hora));