Java - 知道给定String的星期几

时间:2015-03-30 10:45:43

标签: java android calendar dayofweek

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

1 个答案:

答案 0 :(得分:4)

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

c.set(Calendar.MONTH, month);

预计月份编号从0(1月)到11(12月)。如果用

替换它
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));