微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 使用JodaTime获取本地化的周号

我试图用JodaTime获取当前的周数.

在法国,周定义如下:

>星期一开始一个星期(周末在美国开始周).
>一年的第一个星期是1月4日的一周(而IMO,那是1月1日在美国的那一周,是吗?

示例:2012年1月1日是星期日.
因此,

>根据法国日历,它属于2011年第52周.
>根据美国日历,它属于2012年第1周

使用JodaTime,我发现我可以通过以下方法获取周数DateTime#getWeekOfWeekyear().

我认为通过指定正确的TimeZone,我会得到一个本地化的结果:

DateTime dtFr = new DateTime(2012,1,11,DateTimeZone.forTimeZone(TimeZone.getTimeZone("Europe/Paris")));
DateTime dtUS = new DateTime(2012,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(US):2012
> WeekOfWeekYear(US):1

我的代码有问题吗?

解决方法

对您本地化周号的问题抱歉的答案:JodaTime不支持它,只有ISO-8601定义周数.我知道很多用户,这就像一个节目停止.这里的旧的java.util.* – 东西显然更好.

在JodaTime中实现这一功能的唯一方法是引入一个专门的日期时间段,但是当项目引导自己承认时,肯定不容易实现.这已经是noticed in year 2007,但自从没有发生.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


应用场景 C端用户提交工单、工单创建完成之后、会发布一条工单创建完成的消息事件(异步消息)、MQ消费者收到消息之后、会通知各处理器处理该消息、各处理器处理完后都会发布一条将该工单写入搜索引擎的消息、最终该工单出现在搜索引擎、被工单处理人检索和处理。 事故异常体现 1、异常体现 从工单的流转记录发现、
线程类,设置有一个公共资源 package cn.org.chris.concurrent; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * @Descrip
Java中的数字(带有0前缀和字符串)
在Java 9中使用JLink的目的是什么?
Java Stream API Filter(过滤器)
在Java中找到正数和负数数组元素的数量
Java 9中JShell中的不同启动脚本是什么?
使用Java的位填充错误检测技术
java中string是什么
如何使用Java中的JSON-lib API将Map转换为JSON对象?