Java - 知道给定字符串的星期几
Java - Know the day of the week of the given String
在 android 中,我有一个 "2015-03-30T12:30:00"
格式的字符串,我想知道它是星期几。
同一天使用设备进行测试,具有该功能 dayOfweek = 5
和 dayOfWeek2 = 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
class 的 parse
方法将 String
转换为 Date
。
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
c.setTime(format.parse(hora));
在 android 中,我有一个 "2015-03-30T12:30:00"
格式的字符串,我想知道它是星期几。
同一天使用设备进行测试,具有该功能 dayOfweek = 5
和 dayOfWeek2 = 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
class 的 parse
方法将 String
转换为 Date
。
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
c.setTime(format.parse(hora));