gpt4 book ai didi

java - 使用 JodaTime 获取本地化周数

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:56:27 26 4
gpt4 key购买 nike

我正在尝试使用 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

我的代码有问题吗?

最佳答案

您对本地化周数问题的遗憾回答:JodaTime 不支持它,仅支持周数的 ISO-8601 定义。我知道对于许多用户来说,这就像一个表演障碍。这里旧的 java.util.*-stuff 显然更好。

在 JodaTime 中实现此功能的唯一方法是引入专门的日期时间字段,但正如项目负责人自己承认的那样,实现起来肯定不容易。这已经是noticed in year 2007 ,但此后什么也没发生。

顺便说一下,时区与本地化周数问题无关,因此您无法通过任何时区配置来解决这个旧的 Joda 问题。

关于java - 使用 JodaTime 获取本地化周数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22195312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com