我想获取当前的星期数和年份。我尝试了以下代码段
Calendar cal = new GregorianCalendar(Locale.GERMANY);
Date today = new Date();
cal.setTime(today);
int current_week = cal.get(Calendar.WEEK_OF_YEAR)
int year = cal.get(Calendar.YEAR)
对于今天的日期(2019年12月31日),周编号为 2020年1月 但以上代码给出了 01 2019 。
如何获取周编号为 01 2020 ?
答案 0 :(得分:3)
两点:
Date
,Calendar
和GregorianCalendar
的设计欠佳,而且已经过时。请勿使用其中任何一个。使用现代的Java日期和时间API java.time。在代码中:
Locale userLocale = Locale.GERMANY;
WeekFields weekNumbering = WeekFields.of(userLocale);
LocalDate date = LocalDate.of(2019, Month.DECEMBER, 31);
int currentWeek = date.get(weekNumbering.weekOfWeekBasedYear());
int year = date.get(weekNumbering.weekBasedYear());
System.out.format(userLocale, "Week number: %02d %04d%n", currentWeek, year);
此代码段的输出为:
周数:2020年1月
如果您不需要数字,而是将星期数字作为字符串,则使用DateTimeFormatter
会更方便:
DateTimeFormatter weekFormatter = DateTimeFormatter.ofPattern("ww YYYY", userLocale);
String formattedWeek = date.format(weekFormatter);
System.out.println("Week number: " + formattedWeek);
输出与以前相同。
答案 1 :(得分:1)
您可以使用calendar.getWeekYear()
Calendar cal = new GregorianCalendar(Locale.GERMANY);
Date today = new Date();
cal.setTime(today);
int current_week = cal.get(Calendar.WEEK_OF_YEAR);
int year = cal.get(Calendar.YEAR);
System.out.println("Week: "+current_week);
System.out.println("Year: "+year);
System.out.println("Week Year: "+cal.getWeekYear());