繁体   English   中英

Java 日历使用 Calendar.DAY_OF_WEEK 获取特定日期的第一个和最后一个日期

[英]Java Calendar using Calendar.DAY_OF_WEEK to get the first and the last dates for a particular date

在我的应用程序中,有一个代码有时会突然工作,它是关于使用 java 日历 object 通过 Calendar.DAY_OF_WEEK 获得一周的间隔。 代码检查星期一作为一周的开始和星期日作为一周的结束,例如: fromCal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); toCal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); toCal 设置为最后一个星期日,而不是星期天。 除了这种硬编码之外,还有其他方法可以做到这一点。

提前感谢帮助。

谢谢,

瓦布哈夫

我想您必须将一周的开始时间设置为星期一,否则上个星期日是一周中的星期日。

setFirstDayOfWeek

公共无效setFirstDayOfWeek (整数值)

 Sets what the first day of the week is; eg, Sunday in US, Monday in France. **Parameters:** value - the given first day of the week.

Java 日历文件

问题出在语言环境中。 在英语(美国)中,星期日是一周的第一天。 检查此代码:

Calendar cal = Calendar.getInstance(Locale.ENGLISH);
    cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
    System.out.println("FirstDayOfWeek="+cal.getFirstDayOfWeek());
    System.out.println(cal.getTime().toString());
    cal = Calendar.getInstance(Locale.FRANCE);
    System.out.println("FirstDayOfWeek="+cal.getFirstDayOfWeek());
    cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
    System.out.println(cal.getTime().toString());

在这里非常清楚你想要的行为。 您从日历 object 开始,其“现在”是一周中的某一天,也许是“今天”。 你的电话集(DAY_OF_WEEK,...)。 如果日历的今天是星期二,您希望得到什么效果? 星期日? 周一?

正如在其他答案中所观察到的,会发生什么取决于日历对一周的第一天的看法。 因此,首先将其设置为您选择的值。 然后,您将(根据此答案在本周获得周日和周一,这可能不是您想要的-如果今天是周日,您到底需要什么?-某些系统实际上可能正在“考虑”下周.

就个人而言,我可能会根据一些业务规则得到我的星期一,然后通过增加 6 天得到星期天。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM