【发布时间】:2023-03-21 01:37:02
【问题描述】:
我正在为我的应用程序开发一个本地日历。但这是每月重复事件(星期几)的问题。
当我创建一个从16-9-2016(16 SEP 2016 FRIDAY) 开始并重复每个月的第三个星期五的事件时。但下个月它会在第二个创建
2016 年 14 月 10 日星期五(这是问题)。下个月是第三个星期五。
我的代码是
public Date nthWeekdayOfMonth(int dayOfWeek, int month, int year, int week, TimeZone timeZone) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(timeZone);
calendar.set(Calendar.DAY_OF_WEEK, dayOfWeek);
calendar.set(Calendar.WEEK_OF_MONTH, week);
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.YEAR, year);
return calendar.getTime();
}
我知道这个问题。但我不知道如何解决它.. 有什么办法可以解决它?
【问题讨论】:
-
提示:如果可能,请使用 Java8 日期/时间 API 而不是好的日历。日历真的很重要。
-
@GhostCat 抱歉我们的系统使用 Java7。有没有办法通过使用 Java7 日历来修复它
-
如果您使用的是 Java7,您可以尝试Joda Time,然后this answer 包含示例代码。
-
您在哪里遇到问题?我刚刚使用以下参数进行了尝试,它对我有用:
nthWeekdayOfMonth(6, 9, 2016, 3, TimeZone.getTimeZone("Europe/London"));,返回:Fri Oct 21 10:59:09 BST 2016除非,我做错了一个参数......