踩坑:日期格式化yyyy-MM-dd和YYYY-MM-dd的区别
栗子
public static void main(String[] args) {SimpleDateFormat df1 = new SimpleDateFormat("YYYY-MM-dd");SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();// 2021年12月25日周六c.add(Calendar.MONTH, 3);c.set(Calendar.DATE, 25);System.out.println("YYYY-MM-dd格式化结果:" + df1.format(c.getTime()));System.out.println("yyyy-MM-dd格式化结果:" + df2.format(c.getTime()));System.out.println("-------我是分割线---------");// 2021年12月26日 周日c.add(Calendar.DATE, 1);System.out.println("YYYY-MM-dd格式化结果:" + df1.format(c.getTime()));System.out.println("yyyy-MM-dd格式化结果:" + df2.format(c.getTime()));
}
结果
异常
同一个日期“2021-12-25”,使用yyyy-MM-dd和YYYY-MM-dd对其格式化,就结果来看,看不出区别。但是当日期为“2021-12-26”时,使用yyyy-MM-dd和YYYY-MM-dd对其格式化时,结果却不一样。一个是2021年一个却是2022年,这是为何。如果不小心使用了YYYY进行格式化,难免造成程序Bug啊!!
原因分析
日期格式化时,yyyy表示当天所在的年,而大写的YYYY代表是week in which year(JDK7之后引入的概念),意思是当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,返回的YYYY就是下一年。
“YYYY format” 是 “ISO week numbering system”
“yyyy format” 是 “Gregorian Calendar”(公历)y:year-of-era;正正经经的年;
Y:week-based-year;只要本周跨年,那么这周就算入下一年;也就是 12 月
结论
果断使用yyyy-MM-dd
踩坑:日期格式化yyyy-MM-dd和YYYY-MM-dd的区别相关推荐
- 踩坑之ios手机new Date(yyyy-MM-dd hh:mm:ss).getTime()返回NaN
1.场景: 公司的小程序中有一个这样的功能,后端返回一个时间,时间格式是yyyy-MM-dd hh:mm:ss,然后前端根据这个时间和当前时间做比较,如果小于当前时间,则用户点击复习的按钮是能打开对应 ...
- JS 获取当前日期时间/时间日期格式化(时间戳 转 yyyy-MM-dd HH:mm:ss)
// 不输入参数调用的就是当前时间 // 参数--需转换时间的时间戳 function formatDate(time = new Date()) {let date = new Date(time) ...
- 原生JS 日期格式化 (形如yyyMMdd hh:mm:ss等)
代码 function formatDate(date, fmt) {var currentDate = new Date(date);var o = {"M+": current ...
- 写一个方法对日期格式化 new Date().format(yyyy-MM-dd HH:mm:ss)
<script>Date.prototype.format = function (fmt) { //author: meizzvar o = {"M+": this. ...
- js日期格式化Date
使用Date类进行日期格式化. 1 输入"yyyy-MM-dd hh:mm:ss"格式的String字符串,返回字符串 做一个简单判定,在当日显示为几点几分,同年为月日,不同年显示 ...
- SQLServer日期格式化
SQLServer日期格式化 原文:SQLServer日期格式化 0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM) ...
- 奇淫巧技,springboot 全局日期格式化处理,有点香!
最近面了一些公司,有一些 Java方面的架构.面试资料,有需要的小伙伴可以在公众号[程序员内点事]里,无套路自行领取 说在前边 最近部门几位同事受了一些委屈相继离职,共事三年临别之际颇有不舍,待一切手 ...
- SpringMVC日期格式化
一.关于SpringMVC日期的格式化大概可分为四点 1.@ResponseBody方式返回json的日期格式化 2.ajax方式返回json的日期格式化 3.数据保存时String转Date 4.页 ...
- java日期格式化字符串,大小写区别,YYYY与yyyy,MM与mm,HH与hh
YYYY 代表 Week Year yyyy 代表year MM 代表 月(Month) mm代表 秒(Min) HH代表24小时制 hh代表12小时制
最新文章
- 最全干货:从写简历,到面试、谈薪酬的那些技巧和防坑指南
- 浅谈Java中的final关键字
- Android–多线程之Handler下载图片源码
- spring冲刺第一天
- 测开之路十五:构造函数、析构函数
- 岗位推荐 | 微软AI Research Group招聘自然语言处理AI算法研究实习生
- 查找数组中任一峰值的下标
- python中home定义是什么_第48p,什么是函数?,Python中函数的定义
- javascript --- 非交互、交互、协作、任务
- mpvue v-html解决方案,mpvue开发小程序所遇问题及h5转化方案
- oracle中日期处理方法 汇总
- discuz二次元文章博客模板
- 【安全】LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol
- Docker安装Oracle教程
- ucos-II之就绪表解读
- 实用干货!大数据入门的常用技术栈全在这里了
- 阿里云高级技术专家王晨:云原生数据库PolarDB技术解密
- 五子棋java_Java五子棋小游戏完整源代码
- ElasticSearch + kibana 基础查询文档大全
- C# 基础 (3) 垃圾回收机制(Garbage Collector)