英文:
Wrong DAY_OF_WEEK
问题
你好,我写了下面的代码,但不明白为什么它不起作用。例如对于今天(2020年4月4日),dayOfWeek
应该是7,但结果却是2...
Calendar calendar = Calendar.getInstance();
calendar.set(2020, 3, 4); // 请注意月份从0开始,所以这里的3表示四月
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(dayOfWeek); // 这会在控制台上打印出2
英文:
Hy, I wrote the code below and I don't understand why it's not working. For example for today (04.04.2020) dayOfWeek
should be 7, but the result is 2….
Calendar calendar = Calendar.getInstance();
calendar.set(2020, 4, 4);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(dayOfWeek); //this print 2 on the console
答案1
得分: 2
错误出现在这行代码中:
calendar.set(2020, 4, 4);
它以0表示一月开始。因此正确的代码应该是:
calendar.set(2020, 3, 4);
完整代码:
Calendar calendar = Calendar.getInstance();
calendar.set(2020, 3, 4);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(dayOfWeek);
输出结果:
7
英文:
The error is in this line of code:
calendar.set(2020, 4, 4);
It starts with January with the number 0. So the correct code would be:
calendar.set(2020, 3, 4);
Full code:
Calendar calendar = Calendar.getInstance();
calendar.set(2020, 3, 4);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(dayOfWeek);
Outputs:
7
答案2
得分: 1
虽然 @Kaimson 的答案是正确的,但我会选择使用 Java 8 的 LocalDate 而不是 java.util.Calendar,你的代码将会是:
DayOfWeek.valueOf(LocalDate.now().getDayOfWeek()).name()
如果你不使用 Java 8,可以查看 Joda Time,它有类似的 API:
DateTime.now().dayOfWeek() // 返回表示当前星期几的数字,范围是 1 到 7
英文:
While @Kaimson's answer is correct, I would opt for using java8s LocalDate instead of java.util.Calendar, where you're code will be:
DayOfWeek.valueOf(LocalDate.now().getDayOfWeek()).name()
If you're not using java8, look into joda time, which has a similar API:
DateTime.now().dayOfWeek() // yields a number 1-7 representing the current day
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论