我们使用 java 应用程序,它有一个日期选择字段,当您单击那里时,一个小日历会打开。那里一周的第一天是星期天。但我希望它是星期一。我尝试从日期设置的 Windows 控制面板更改它。例如,我将 Windows 日历的第一天设置为星期四。但在 Java 应用程序的日历中,一周的第一天仍然是星期日。是否可以从 Windows 更改 Java 应用程序的一周的第一天,还是仅从 Java 应用程序的代码更改?
问候
您可以使用方法 setFirstDayOfWeek() 来设置一周的第一天。该方法只能影响 WEEK_OF_MONTH 或 WEEK_OF_YEAR 的返回值。对于 DAY_OF_WEEK,它什么都不做。
你可以实现类似的东西:
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY);
int rec = cal.get(Calendar.WEEK_OF_MONTH);
System.out.println(rec);
阅读更多关于 API 这里
如果你想设置星期一然后使用
Calendar currentCalendar = Calendar.getInstance(new Locale("en","UK"));
如果你想设置星期天然后使用
Calendar currentCalendar = Calendar.getInstance(new Locale("en","US"));
你的 java 应用程序使用哪个框架?日期选择字段是什么组件?
在 Java 中
Calendar
默认情况下,一周的第一天由系统的 Locale 设置决定。
所以如果您不能更改应用程序的源代码:
-Duser.country
或 -Duser.region for
java。
看看here.Calendar now = Calendar.getInstance();
System.out.println("Current date : " + (now.get(Calendar.MONTH) + 1) + "-"
+ now.get(Calendar.DATE) + "-" + now.get(Calendar.YEAR));
String[] strDays = new String[] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thusday",
"Friday", "Saturday" };
// Day_OF_WEEK starts from 1 while array index starts from 0
System.out.println("Current day is : " + strDays[now.get(Calendar.DAY_OF_WEEK) - 1]);
简而言之:
WeekFields.of(DayOfWeek.MONDAY, 1)
这是一些例子:
int weekOfYear1 = LocalDateTime.parse("2023-01-02 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
.get(WeekFields.SUNDAY_START.weekOfWeekBasedYear());
int weekOfYear2 = LocalDateTime.parse("2023-01-02 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
.get(WeekFields.ISO.weekOfWeekBasedYear());
int weekOfYear3 = LocalDateTime.parse("2023-01-02 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
.get(WeekFields.of(DayOfWeek.MONDAY, 1).weekOfWeekBasedYear());
weekOfYear1 is 1
weekOfYear1 is 1
weekOfYear1 is 2