【发布时间】:2019-11-09 07:42:25
【问题描述】:
我有一个使用日历的应用程序,我需要查看星期几。问题在于,除 7 月外,一年中的所有日期都需要正确的星期几。
我尝试在全年添加不同的日期,但这个问题只发生在 7 月。
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date date = formatter.parse(fechaaux);
Calendar c = Calendar.getInstance();
c.setTime(date);
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
如果 fechaux 在 8 月的星期一,则返回 6(这没关系),但如果我在 7 月的星期一添加日期,则返回 7,它应该显示 6。为什么会这样?
谢谢!
【问题讨论】:
-
您能提供示例输入吗?顺便说一句,星期一应该是 2。
-
除了@GyroGearless 评论,你有没有将一周的第一天设置为其他任何一天?例如:cal.setFirstDayOfWeek(Calendar.MONDAY);
-
@GyroGearless 确定!在正常月份,它显示周二像 7,周三像 1。而在 7 月,它显示周一像 7,周二像 1。
-
我建议您不要使用
SimpleDateFormat、Date和Calendar。这些类设计不佳且过时已久,尤其是第一个类是出了名的麻烦。而是使用LocalDate、DateTimeFormatter和DayOfWeek,均来自java.time, the modern Java date and time API。 -
与 Ole V.V. 相同。说,但更强大:您必须立即放弃
Calendar、Date和SimpleDateFormat类,并开始使用java.time包中提供的更新的 Java 日期和时间 API。
标签: java dayofweek java.util.calendar