【发布时间】:2017-02-16 10:18:38
【问题描述】:
我正在尝试使用 JodaTime 获取当前周数。
在法国,星期是这样定义的:
- 一周从星期一开始(而在美国,一周从星期日开始)。
- 一年中的第一周是包含 1 月 4 日的那一周(而 IMO,在美国是包含 1 月 1 日的那一周。对吗?我验证了 here)。
示例:2012 年 1 月 1 日是星期日。 因此,
- 根据法国日历,它属于2011的52周。
- 根据美国日历,属于2012的1周
使用JodaTime,我发现我可以使用以下方法DateTime#getWeekOfWeekyear()获取周数。
我认为通过指定正确的时区,我会得到一个本地化的结果:
DateTime dtFr = new DateTime(2012, 1, 1, 11,11, DateTimeZone.forTimeZone(TimeZone.getTimeZone("Europe/Paris")));
DateTime dtUS = new DateTime(2012, 1, 1, 11,11, DateTimeZone.forTimeZone(TimeZone.getTimeZone("US/Arizona")));
LOGGER.info("weekYear (FR) : " + dtFr.weekyear().get());
LOGGER.info("weekOfWeekYear (FR) : " + dtFr.getWeekOfWeekyear());
LOGGER.info("weekYear (US) : " + dtUS.weekyear().get());
LOGGER.info("weekOfWeekYear (US) : " + dtUS.getWeekOfWeekyear());
输出是:
2014-03-05 11:28:08,708 - INFO - c.g.s.u.JodaTest - weekYear (FR) : 2011
2014-03-05 11:28:08,709 - INFO - c.g.s.u.JodaTest - weekOfWeekYear (FR) : 52
2014-03-05 11:28:08,709 - INFO - c.g.s.u.JodaTest - weekYear (US) : 2011
2014-03-05 11:28:08,709 - INFO - c.g.s.u.JodaTest - weekOfWeekYear (US) : 52
我已经预料到了:
- weekYear(美国):2012
- weekOfWeekYear(美国):1
我的代码有问题吗?
【问题讨论】: