Kje*_*din 4 java calendar date gregorian-calendar
我的问题似乎非常简单.我从GregorianCalendar对象创建一个日历图形用户界面,并使用它的方法计算不同月份的正确天数,以及不同日期的相应工作日.
但工作日有一天休息一致.日历声称2013年7月1日是'2',这在我的世界意味着星期二.星期一应该是'1'."简单!" 我想,并把它放在一行:c.setFirstDayOfWeek(Calendar.MONDAY); 但没有给出任何反应.
所以我搜索stackoverflow得到一个答案,但是每个有问题的人似乎都忘记了1月是0,而不是1.我没有.所以现在我被卡住了.
作为一个简化的代码,我创建了一个非常短的代码片段,它具有相应的输出:
GregorianCalendar c = new GregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.set(Calendar.MONTH, 6);
c.set(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.YEAR, 2013);
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-YYYY");
System.out.println(sdf.format(c.getTime()));
System.out.println(c.get(Calendar.DAY_OF_WEEK));
Run Code Online (Sandbox Code Playgroud)
输出是:
2013年1月7日
2
我拒绝在我的代码中输入"-1",错误地纠正了显然是错误的症状.感谢帮助.
ppe*_*rka 12
是的,Java中的日期处理是有问题的......
SUNDAY
1 开始,SATURDAY
是7(Ideone小提琴)c.setFirstDayOfWeek(Calendar.MONDAY); 与名称暗示的有点不同
一个月或一年的第一周定义为从getFirstDayOfWeek()开始并且至少包含该月或年的getMinimalDaysInFirstWeek()天的最早七天期间
您可以通过始终使用Calendar类中定义的常量来解决问题,甚至不尝试从这些常量的数值表示中推断出任何含义,或者Calendar.get(int)
方法返回的结果......
Jon*_*eet 10
我拒绝在我的代码中输入"-1",错误地纠正了显然是错误的症状.
错误是你的Calendar.get(Calendar.DAY_OF_WEEK)
本地化假设.事实并非如此.星期几和号码之间的映射是固定的; 使用Calendar.getFirstDayOfWeek()
来确定"一周的第一天,"如果你需要的人的理解; 如果你真的想要向用户显示"2",我会感到惊讶......当然你想要向他们展示一周中某天的名字.
尽管如此,任何涉及本周开始的计算都应该使用getFirstDayOfWeek
.
归档时间: |
|
查看次数: |
11563 次 |
最近记录: |