Java 日期格式yyyy-MM-dd与YYYY-MM-dd区别
yyyy-MM-dd HH:mm:ss:SSS 24小时制或yyyy-MM-dd hh:mm:ss:SSS 12小时制,本文就来介绍一下两者的区别,感兴趣的可以了解一下
1. 前言
我们在java中常用的规范格式为:yyyy-MM-dd HH:mm:ss:SSS 24小时制
或yyyy-MM-dd hh:mm:ss:SSS 12小时制
2. yyyy-MM-dd与YYYY-MM-dd区别在哪里?
我们看IDEA给的代码提示:
(小疏忽后面的字被挡住了),解释如下:
- Y 代表 Week Year,表示当天周所在的年份。这种方式将会把一年划分成52 周/53周(类似于闰年的概念,每隔几年将会增加一周)。
- Week Year下每周仅属于某一年,如果某年的第一周或最后一周跨年,就会导致部分日期年份与实际不符。
- YYYY 表示:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。
3. 举例验证
常用格式为:yyyy-MM-dd HH:mm:ss;
以:2015-01-02 17:19:22:043
举例
字符 | 含义 | 举例 |
---|---|---|
y(小写y) | 年 | yyyy-2015 |
M(大写M) | 月 | MM-01 |
d(小写d) | 日(某月份对应的天数) | dd-02 |
H(24 小时制,大写H) | 小时(0-23) | HH-17 |
h(12 小时制,小写h) | 小时(1-12) | hh-05 |
m(小写m) | 分钟 | mm-19 |
s(小写s) | 秒 | ss-22 |
Y(大写y) | Week Year | YYYY-2015 |
D(大写D) | 一年中的天数(年份为大写Y起作用) | DD-362 |
S(大写S) | 毫秒 | SSS-043 |
4. 上代码验证
4.1 代码
public static void main(String[] args) { // 将指定时间转换成时间戳,再由时间戳转换成时间 String Stime = "2015-01-02 17:19:22:43"; // 处理前的时间 long Ltime = 0; // 时间戳 System.out.println("处理前的时间:" + Stime); // 时间转为时间戳 //1.SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 2.SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-DD hh:mm:ss"); // 3.SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"); // 4.SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-MM-DD hh:mm:ss"); try { Date date2 = simpleDateFormat.parse(Stime); Ltime = date2.getTime(); System.out.println("时间转时间戳结果:" + Ltime); } catch (ParseException | java.text.ParseException e) { e.printStackTrace(); } //将时间戳转换为时间 String res = simpleDateFormat.format(Ltime); System.out.println("时间戳转时间结果:" + res); }
4.2 结果:
结果1:yyyy-MM-dd HH:mm:ss:SSS
处理前的时间:2015-01-02 17:19:22:43
时间转时间戳结果:1420190362043
时间戳转时间结果:2015-01-02 17:19:22:043结果2:yyyy-MM-DD hh:mm:ss:SSS
时间转时间戳结果:1420190362043
时间戳转时间结果:2015-01-02 05:19:22:043 (证明yyyy对大写D不敏感)结果3:YYYY-MM-dd HH:mm:ss:SSS
时间转时间戳结果:1419758362043
时间戳转时间结果:2015-12-28 17:19:22:043结果4:YYYY-MM-DD hh:mm:ss:SSS
时间转时间戳结果:1419758362043
时间戳转时间结果:2015-12-362 05:19:22:043 (证明YYYY对大写D敏感)362代表12月28号这天是一年中的第362天
5. 关于字母数量以及大小写问题
5.1 大小写问题
字母的大小写一定要符合规范,否则会出现bug,比如yyyy-mm-dd hh:MM:ss,
此时月份和分钟写乱了,就会出现时间错乱问题,月份时间变错,结果如下:
例子:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd HH:MM:ss"); 2016-01-02 17:07:22
5.2 字母数量问题
根据日常使用规范年份都是四个字母所以yyyy,月份、天数、时分秒毫秒同理(毫秒=1000就进位了)
以下是一些字母数量不常规的结果:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yy-MM-dd HH:mm:ss:SSS"); 时间戳转时间结果:15-01-02 17:19:22:043 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("y-MM-dd HH:mm:ss:SSS"); 时间戳转时间结果:2015-01-02 17:19:22:043 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyy-MM-dd HH:mm:ss:SSS"); 时间戳转时间结果:02015-01-02 17:19:22:043 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HHH:mmm:ss:SSS"); 时间戳转时间结果:2015-01-02 017:019:22:043
6. 总结
在java中要使用规范:即-> yyyy-MM-dd HH:mm:ss:SSS 24小时制
或yyyy-MM-dd hh:mm:ss:SSS 12小时制
到此这篇关于Java 日期格式yyyy-MM-dd与YYYY-MM-dd区别的文章就介绍到这了,更多相关Java yyyy-MM-dd YYYY-MM-dd内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java获取HttpServletRequest的三种方法详解
这篇文章主要介绍了Java获取HttpServletRequest的三种方法详解,是一个接口,全限定名称为Jakarta.Serclet.http.HttpServletRequest2023-11-11
HttpServletRequest接口是Servlet规范的一员,需要的朋友可以参考下解决SpringBoot加载application.properties配置文件的坑
这篇文章主要介绍了SpringBoot加载application.properties配置文件的坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08
最新评论