时间格式区别之YYYY/MM/dd HH:mm 与 yyyy/MM/dd HH:mm
1. 相应的业务场景
1.1 场景简介
正值2019年末,2020年初之际,系统日期时间为2019/12/31而系统报表却出现了2020/12/31的日期。
1.2 代码案例如下
2.Java中YYYY与yyyy的含义
2.1 时间字母含义表
2.2 Y的Week Year含义
Y代表的事Week Year,表示当天周所在的年份。这种方式将会将一年划分为52周或者事53周(类似闰年,每隔几年会增加一周)。Week Year的每周仅仅属于某一年,如果某年的第一周或者最后一周跨年,就会导致部分日期年份与实际不符合。
2.3 Week Year的两种标准
- ISO 8601:国际标准,每周从周一开始,每年的第一周至少包含 4 天
- Common:通用标准,每周从周日开始,每年的第一周至少包含 1 天
注:Calendar 对象可以通过 setFirstDayOfWeek 与 setMinimalDaysInFirstWeek 改变上面默认标准
Java 将会根据系统环境变量决定使用哪种标准,可以通过设置 Locale 改变方式。代码如下:
// 选择 20191229 这一天
Date date20191229 = DateUtils.parseDate("20191229", "yyyyMMdd");
// 将会输出 2020,使用 Common 。当前系统,Locale 默认值为 Locale.CHINA
System.out.println(DateFormatUtils.format(date20191229,"YYYY"));
// 将会输出 2019,使用 ISO 8601
System.out.println(DateFormatUtils.format(date20191229,"YYYY", Locale.FRANCE));
2.4 ISO 8601 标准之最后一周跨年以及第一周跨年的例子:
2015 年最后一周跨年,2016 前三天使用 YYYY 最后结果为 2015,时间看起来被回退了
|
2020 年第一周跨年,2019 年最后两天使用 YYYY 结果为 2020
|
3. 常用的日期格式
下面以 2019-12-31 06:06:06:666
时间为例
Letter | 含义 | Example |
---|---|---|
Y | Week Year | YYYY—>2020 |
y | 年 | yyyy——>2019 |
M | 月 | MM——>12 |
m | 分 | mm——–>06 |
D | 一年中天数 | DD——–>365 |
d | 一月中的天数 | dd———>06 |
H | 小时(0-23) | HH———>06 |
h | 小时(1-12) | hh———>06 |
S | 毫秒 | SSS———>666 |
总结:
- 第一,切记
YYYY
与yyyy
区别,年份最好统一使用yyyy
- 第二,可以使用阿里的 Alibaba Java Coding Guidelines 插件,这个插件可以检测出使用
YYYY
的代码 - 第三,阅读完整文档,消除 Bug 最好的的办法就是阅读完整的文档
帮助:
1. week_year
2. Serious Security: The decade-ending “Y2K bug” that wasn’t
3. ISO week date_wiki
4. Difference between year-of-era and week-based-year?
转载地址:http://www.justdojava.com/
时间格式区别之YYYY/MM/dd HH:mm 与 yyyy/MM/dd HH:mm相关推荐
- Java时间格式保存出错处理:java.util.Date,typeMismatch
Field error in object 'role' on field 'createDatetime': rejected value [2021-02-19 11:38:38]; codes ...
- vue中通过monment.js插件来将时间戳转换为常用的时间格式
vue中通过monment.js插件来将时间戳转换为常用的时间格式 在项目中很多时候需要展示时间信息,我们一般都是用时间戳来传输时间信息,但是我们在页面展示的话是我们想要的常见格式,比如:2021-4 ...
- java 时间格式“yyyyMMddHHmmssSSSSSS”的解释
一.背景 因近期对接第三方接口时,涉及到多种时间格式,因此记录一下时间格式中的相关含义. 二.时间格式解释 字母 日期或时间元素 表示 示例 G Era 标志符 Text AD y 年 Year ...
- ISO-8601及GMT时间格式
1.ISO-8601时间格式:1 public static final String ISO_8601 = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"; 202 ...
- 中国地区“MMM dd, yyyy HH:mm:ss a“的时间格式问题
我们先来看以下代码: public class test {private final static DateTimeFormatter dtf1 = DateTimeFormatter.ofPatt ...
- vue3时间格式转换为yyyy/mm/dd,yyyy-MM-dd,yyyy-MM-dd hh:mm:ss,hh:mm,yyyy-MM-ddThh:mm:ss+08:00
时间格式转换为yyyy/mm/dd export const dateFormat1 = (time = new Date().getTime()) => { //YYYY/MM/DDconst ...
- NET问答: 为什么时间格式 dd/MM/yyyy 转成 DateTime 会报错?
咨询区 Shantanu Gupta: 我在项目中碰到了一个需求,需要将字符串格式的 dd/MM/yyyy 转成 DateTime,比如下面这样: class Program{static void ...
- 自定义jackson解析时间格式yyy-MM-dd HH:mm:ss
原文:https://my.oschina.net/xpx/blog/1924695 一.问题排查 1.出现的场景 1)服务端通过springmvc写了一个对外的接口,返回一个json字符串,其中该j ...
- [乐意黎原创] 时间格式 yyyy-MM-dd‘T‘HH:mm:ss.SSSZ 中的T和Z表示什么
1. 事情起因: 本人这久在关注一个地方域名( ***.ren,由于某些因素,此处用 *** 来代表域名), 因域名已经过期,有打算抢注的意愿,就等域名注册机构删除后我来抢注册了. ( ***.ren ...
最新文章
- 转:设置session过期时间
- 禁用引导模态区域之外的单击以关闭模态
- Mac OS Terminal 几个快捷键
- Android开发环境简单配置
- python文件中环境声明_Python环境构建
- OPA 3 - thirdParty Qunit.js and IFrame load logic
- 服务器无法在发送 http 标头之后设置内容类型。_python socket编程预知内容
- windows下使用boost安装教程vs2015
- wnoise matlab,MATLAB中用wnoise函数测试去噪算法
- SxSW小组成员讨论了Valley调查中的Elephant
- Linux下Eclipse给工程配置(附加库目录)
- 2015/7/24 (等待回调,结果是盘中回调,盘末拉升,错过了进仓机会吗?详情进入...
- Matlab2016a安装libsvm
- 使用 iPerf 测试路由器局域网性能
- 批处理删除文件夹下所有文件和文件夹
- 证件照更换背景 裁剪尺寸 智能图片放大 照片 证件照大师
- 最短路径系列【最短路径、哈密顿路等】
- Word 模板渲染引擎-Poi-tl
- 边框颜色和背景色之间的关系
- 中文散步的时候,发现枫叶开始红了