不知道你是否忍受够了JDK 中对周这种日期的处理,比如 2017-1-1.这天不知道你是该记为 2017年的第0周,还是第一周。而且周日到底是每周的第1天,或者是第0天,或者是周一才是每周的第1天,周日是第7天。总之,各个国家和地区都有不同的统计方式,而且中国古代历法根本就没有周的概念,也就是说周对于我们来说是个舶来品。统计方式每个人和组织都有不同的见解,虽然有国家标准,鲜有人去统一执行。
还好,国际化标准组织的国际标准ISO 8601 对日期和时间的表示方法做出了明确规定,周数也计算方式也做了详细的说明,包括中国在内的国家标准 GB/T 7408-2005 都是依据该标准扩展而来。
根据ISO 8601 的规则。
1、每年有52周或者53周
2、周一至周日为一个完整周。
3、每周的周一是该周的第1天。周日是该周的第7天
4、 每年的第一周 为 每年的第一个 周四 所在的周。比如 2017年1月5日为当年的第一个周四,那么 2017-01-02 至 2017-01-08 为2017年第一周
5、每年的最后一周为当年最后一个周四所在的周。比如2016年12月29日为当年的最后一个周四,那么2016-12-26 至2017-01-01 为2016年的最后一周。
6、周年,当前周所在的年份为周年。比如 2017年1月1日的周年为2016年。2016年1月1日,2016年1月2日,2016年1月3日的周年均为2015年。
既然有了这么好的一个国际标准,大部分编程语言自然会对其支持。我们就按照这个标准执行,在数据的计算上就不应该有问题了,可是偏偏JDK1.7 及其之前的版本居然都不支持ISO 8601 标准。还好民间的力量比较大。有众多API包都发布了对ISO 8601 的支持,其中joda-time最为流行。
引入 (maven项目)
<dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.9.9</version></dependency>
1、Date转Joda-time
Date date = new Date();
DateTime dateTime = new DateTime(date);
2、Joda-time转为Date
DateTime dateTime = new DateTime();
Date date = dateTime.toDate();
3、Calender转为Joda-time
Calendar c = Calendar.getInstance();
DateTime dt3 = new DateTime(c);
4、Joda-time转为Calender
DateTime dateTime = new DateTime();
Calendar c = dateTime.toCalendar(Locale.CHINA);
5、string转为Joda-time
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ");
DateTime dt2 = fmt.parseDateTime("2017-05-15T10:25:17.432+08:00");
6、Joda-time格式化输出
DateTime dt = new DateTime();
dt.toString("yyyy-MM-dd");//  或者
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd");
fmt.print(dt);
参考网址
http://www.joda.org/joda-time/
https://en.wikipedia.org/wiki/ISO_8601
https://en.wikipedia.org/wiki/ISO_week_date

ISO 8601中周数的处理及 Joda-Time 的使用相关推荐

  1. excel日期转换为周数_VBA将日期转换为周数

    6 个答案: 答案 0 :(得分:12) 要将周数作为第一天的星期一,请使用以下内容: WorksheetFunction.WeekNum(now, vbMonday) 答案 1 :(得分:6) 使用 ...

  2. ISO 8601 utc 时间

    维基百科,自由的百科全书 跳转到导航跳转到搜索 ISO 8601 数据元素和交换格式 - 信息交换 - 日期和时间的表示是一种涵盖日期和时间相关数据交换的国际标准.它由国际标准化组织(ISO)发布,并 ...

  3. ISO 8601持续时间格式

    ISO 8601 持续时间格式. ISO 8601 中定义了一个时间间隔, 格式如下: ISO 8601持续时间格式如下: P(n)Y(n)M(n)DT(n)H(n)M(n)S 其中: P是持续时间指 ...

  4. C# 计算每年年初与年末的周数 (iso 8601)

    根据ISO 8601标准, 第一个日历星期有以下四种等效说法(参考:https://baike.baidu.com/item/ISO%208601/3910715?fr=aladdin): 1,本年度 ...

  5. java 周历_Java中公历和ISO 8601周历的一个坑

    作者:flhuoshan链接:https://hacpai.com/article/1423812556502 如果尝试运行下面的代码,其结果可能会让你意外: 运行结果为: 2014-12-29 20 ...

  6. java安装_快速提示:Java中的ISO 8601持续时间

    java安装 许多开发人员都知道ISO 8601定义的日期和时间的交换格式. (例如2007-08-31T16:47 +00:00代表2007年8月31日UTC的16:47 ) 但是,并不是很知名(至 ...

  7. C语言编程>第二十周 ② 下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和b[0]中的数对调、次最大数和b[1]中的数对调。

    例题:下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和b[0]中的数对调.次最大数和b[1]中的数对调. 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构. ...

  8. mysql中是如何处理周数,一年的第一周到底从哪天开始计算?

    新的一年2021年来了, 1月1日这天是星期五,不是星期一也不是星期日,这一天到底是2020年的最后一周呢,还是2021年的第一周? 对我而言,这一周是2021年的第一周,但是在mysql中是如何处理 ...

  9. python 时间戳转iso 8601_Python中的ISO时间(ISO 8601)

    回答(11) 2 years ago ISO 8601本地: import datetime datetime.datetime.now().isoformat() UTC至ISO 8601: imp ...

最新文章

  1. 设计模式之创建型模式
  2. java架构师,必须掌握的几点技术?
  3. 【WPF-Devexpress】ChartControl-CrosshairLabel显示内容居右
  4. Go语言介绍 安装 基础命令(一)
  5. k8s pod的三类调度策略:资源限制策略、nodeSelector标签选择器、硬/软亲和性
  6. VS生成的exe文件如何在其他电脑上运行
  7. Redis命令行之Hash
  8. 【Luogu1182】数列分段Section II(二分)
  9. 535 5.7.8 Error: authentication failed: generic failure安装EMOS时SMTP测试报错
  10. mybatis批量更新的时候报Lock wait timeout exceeded; try restarting transaction
  11. es6的模块化export和import
  12. 基于ssh人事考勤管理系统
  13. 使用c#制作赛尔号登录器
  14. 在Ubuntu上安装Tensorflow Serving
  15. android版本低无法安装微信,解决低版本安卓4.4.4无法安装微信的问题
  16. 解决“ImportError: cannot import name ‘_validate_lengths‘”问题
  17. 微信公众号网页授权,获取用户信息以及openid -- PHP后台
  18. Java Web 回顾-HCJ
  19. java 多线程 迅雷_Java 仿迅雷多线程下载
  20. 2022-10-20 Linux自带LED灯驱动gpio-leds 心跳呼吸灯heartbeat、定时器timer的使用

热门文章

  1. <<人工智能导论>>上机--遗传算法求解函数最值
  2. Ubuntu 商店无法安装应用
  3. centos7对普通用户授权sudo权限
  4. 2022年4月语音合成(TTS)和语音识别(ASR)论文月报
  5. ubuntu中无法安装vim
  6. 学习记录 --【零基础CSS学习】03.ID选择器和类选择器
  7. PHP字体间距设置,wps字间距怎么调整
  8. 十大开源Web应用安全测试工具
  9. Java Web项目中遇到的文件上传与下载问题
  10. 微软SQL服务器登录,Microsoft SQL Server 【Windows 身份验证】和 【sa】都无法登录的解决方案...