我正在尝试为我们的财务部门生成一些代码,他们需要一个字段,该字段将为他们提供一年中的当前一周,但以星期天为基础,这是一周的第一天。例如01-25-16(MM dd yyyy)将是第4周。然而,当我尝试使用java时。util。日历
和日历。将FirstDayOfWeek设置为Sunday,它告诉我这是第5周,因为它似乎是从12月底到1月3日的第1周。
这是我到目前为止编写的代码:
private static int getWeekOfYearBySunday(DateTime dt){
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(dt.getMillis());
calendar.setFirstDayOfWeek(Calendar.SUNDAY);
return calendar.get(Calendar.WEEK_OF_YEAR);
}
这将返回一个星期的数字5,即使它应该是4,如果基于本周的开始在周日。
年的周的定义取决于区域设置。有关详细信息,请参阅此相关问题。为什么2010年12月31日返回1作为年的周?。
您必须更改minimadaysinfirstweek
,请参阅日历#设置minimadaysinfirstweek(int):
设置一年中第一周所需的最小天数;例如,如果第一周定义为包含一年中第一个月的第一天,则使用值1调用此方法。如果必须是一整周,请使用值7。
另请参阅GregorianCalendar
:
例如,1998年1月1日是星期四。如果getFirstDayOfWeek()
是MONday
和getMinialDaysInFirstWeek()
是4(ISO 8601标准兼容设置),那么1998年的第1周从1997年12月29日开始,到1998年1月4日结束。1997年自然年的最后三天是1998年。但是,如果getFirstDayOfWeek()
是SUNday
,那么1998年的第1周从1998年1月4日开始,到1998年1月10日结束;1998年的前三天是1997年第53周的一部分,它们的周年是1997年。
但是,如果您为财务部门编写代码,您应该使用正确的Locale
来创建日历,而不是更改某些属性,请参见calendar#getInstance(Locale):
获取使用默认时区和指定区域设置的日历。返回的日历
基于给定区域设置的默认时区中的当前时间。
我想在将一周的第一天设置为周日后,将2018年10月9日这一周作为一年中的42周。我仍然从下面的代码片段中得到41的输出 我错过了什么吗? 背景:我们一周的开始可能是可变的。我们的配置能够让用户决定一周的第一天。
问题内容: 我想找到星期一,星期二,星期三等的日期戳。如果这个星期还未到这一天,我希望该日期为本周,否则为下周。谢谢! 问题答案: 看到 通过查看星期数,您可能会发现自己是否已经过了这一天:
我在本教程的帮助下制作了日历:http://droidwalk.blogspot.it/2012/11/android-calendar-sample.html ..但是这个日历从星期天开始,我想从星期一开始。。我试图改变价值观在函数中设置对象GregorianCalendar,但它不会给出所需的结果。本周从周一开始,但在某些月份,我们失去了第一周。我发现了一个类似的问题:从周一开始制作日历,
我需要在我的dim_date中添加新的业务wee,实际上我有一个月中的星期,如下表所示,每7天计算一次。 但是对于这个商业周专栏,一周应该从星期一开始,到星期日结束,即使第一周只有一天(当一个月从星期日开始时),但如果月份从星期五开始,我应该将其视为该月的第一周。 你有什么建议来计算这个吗?谢谢
问题内容: 假设我有2011年1月3日,我想在一周的第一天,也就是星期天,那是2011年1月2日,我该怎么做? 原因是我有此查询: 是的,我意识到起源拼写错误,但是在此之前我就在这里,因此由于太多内部应用程序引用了它,因此我无法对其进行更正。 因此,我按周分组,但我希望以此填充我的图表,所以我不能让所有的周初看起来都像不同的日期。我该如何解决? 问题答案: 如果您需要处理从星期一开始的几周,也可以
我的布局中有一个,我已经在其中添加了日期更改侦听器: 我可以访问所选日期的年、月、日。但是我怎么知道一周中的哪一天呢?我想要在