java 计算周_java – Joda时间周计算推理
下面的代码演示了星期计算的有问题的joda-time实现.这种行为不是错误,而是设计决策
Joda-Time uses the ISO standard Monday to Sunday week.(也许它应该是一个错误?)
给定一个我需要计算周数的日期,这个计算必须是i18n.含义我必须根据用户的区域设置考虑正确的周编号.
下面的演示代码显示了Joda-Time的错误计算和JDK的正确计算,在我们尝试坚持使用Joda-Time的应用程序中,这是日期操作的优秀解决方案.那么,我应该混合两个时间计算库吗?我显然不愿意,这甚至是一件安全的事情,还是我会进入角落案件(有日期,日历的经验我知道这对Java来说是一个痛苦的问题).
底线:对于上述要求,建议的最佳做法是什么?
问题演示代码
public class JodaTest {
static DateTimeFormatter formatter = DateTimeFormat.forPattern("ww yyyy");
static SimpleDateFormat jdkFormatter = new SimpleDateFormat("ww yyyy");
public static void main(String[] args) {
DateTime time = new DateTime(/*year*/2009, /*monthOfYear*/12, /*dayOfMonth*/6, /*hourOfDay*/23, /*minuteOfHour*/0, /*secondOfMinute*/0, /*millisOfSecond*/0);
StringBuilder buffer = new StringBuilder()
.append("Testing date ").append(time.toString()).append("\n")
.append("Joda-Time timezone is ").append(DateTimeZone.getDefault()).append(" yet joda wrongly thinks week is ").append(formatter.print(time)).append("\n")
.append("JDK timezone is ").append(TimeZone.getDefault().getID()).append(" yet jdk rightfully thinks week is ").append(jdkFormatter.format(time.toDate())).append(" (jdk got it right ?!?!)");
System.out.println(buffer.toString());
}
}
输出:
Testing date 2009-12-06T23:00:00.000+02:00
Joda-Time timezone is Asia/Jerusalem yet joda wrongly thinks week is 49 2009
JDK time zone is Asia/Jerusalem yet jdk rightfully thinks week is 50 2009 (jdk got it right ?!?!)
最佳答案 最好的解决方案是编写DateTimeField的实现,它包装逻辑以根据语言环境提取所需的值.在内部,您可能仍然依赖于JDK数据.目的是将所有JDK代码包装在一个可重用的类中.然后你像这样使用它:
int value = dateTime.get(new LocaleAwareWeekField("en_GB"));
java 计算周_java – Joda时间周计算推理相关推荐
- java程序如何获取北京时间_计算当前的北京时间java(currentTimeMillis)
计算当前的北京时间java(currentTimeMillis) 计算当前的北京时间java(currentTimeMillis) 当前北京时间 编写一个显示当前GMT时间的程序,该时间的格式为小时: ...
- linux c计算时间差值,获取时间和计算时间差的几种方法总结,时间差几种方法...
获取时间和计算时间差的几种方法总结,时间差几种方法 一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( ...
- java 根据星期计算日期_Java 根据指定日期计算所在周的周一和周日
标签:public static void main(String[] args) throws ParseException { SimpleDateFormat sdf=new SimpleDat ...
- java 自然周_java 使用Calendar类计算每月有多少自然周,并输出每周的开始和结束日期...
思路:首先是获取该月的实际天数,然后从1号遍历直至该月最后一天,利用Calendar类找出该日是一周中的第几天, (1)若该日是周日,则视为一周结束,并用该日期减去6找到该周的开始日期,若相减结果小于 ...
- java 日期类 周_Java中用Calendar类计算周和周的起始日期
package com.tongyue.hot.web; import java.util.Calendar; import java.util.Date; import java.util.Greg ...
- php 计算一年后的时间,php 计算一年多少周,同时计算出这一周的开始日期和结束日期...
满意答案 <?php //检查闰年 $time_year=date("Y",time()); if ($time_year%4==0 && ($time_ye ...
- java到期日期_java 常用时间操作类,计算到期提醒,N年后,N月后的日期
packagecom.zjjerp.tool;importjava.text.ParseException;importjava.text.ParsePosition;importjava.text. ...
- java 微秒 时间_Java中时间的计算 年月日小时分钟秒毫秒微秒
//用到的类 DateUtils //这个类存在于 org.apache.commons.lang.time.DateUtils; //也就是这个包 commons-lang-2.3.jar //AP ...
- java 日期计算星座_Java日期时间API系列25-----Jdk8中java.time包中的新的日期时间API类,使用MonthDay计算十二星座。...
packagecom.xkzhangsan.time.enums;import staticcom.xkzhangsan.time.constants.Constant.MONTHDAY_FORMAT ...
最新文章
- ubuntu(16.04.01)学习-day1
- apache环境下配置服务器支持https
- 【Flutter】Flutter Gallery 官方示例简介 ( 项目简介 | 工程构建 )
- Python学习笔记:进程和线程(承)
- Node爬取简书首页文章
- leetcode初级算法5.加一
- gcc编译器的整个工作过程
- 网络流24题 洛谷 3355 骑士共存
- 计算机全加器简单实现
- steam api接口 php,php – 将Steam API信息提取到页面
- mysql hint 简书_MySQL
- html鼠标变成小手_什么牌子的鼠标好用?2020双十一鼠标选购建议和产品推荐
- 基于内容和用户画像的个性化推荐
- PMP第六版5个过程组49个活动
- 软件工程:PG.SE.PL.PM角色定义
- Xcode的一种编译问题:Error: building could produce unreliable results
- “爱心银行”让爱心增值(转自中国文明网)
- adb remount失败的解决办法:
- 移动端下载xls文件
- PHP 微信公众号真正正确的客服头像上传