致命小问题:YYYY-MM-dd格式化时间

【🍇】开始

日期格式化可以说是最常用的一个小知识了,例如格式化成"年-月-日"、"年-月-日 时-分-秒"、"年/月/日"等等,随之也就出现了"yyyy-MM-dd"、"yyyy-MM-dd HH-mm-ss"等格式,使用不当就会一脸懵逼。

【🍊】运行

ini 复制代码
public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    calendar.set(2019, Calendar.DECEMBER, 31);
    Date strDate = calendar.getTime();
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    System.out.println("2019年12月31日格式化【yyyy-MM-dd】后:" + dateFormat.format(strDate));
    dateFormat = new SimpleDateFormat("YYYY-MM-dd");
    System.out.println("2019年12月31日格式化【YYYY-MM-dd】后: " + dateFormat.format(strDate));
}

首先将日期改为2019看一下运行效果:

yaml 复制代码
2019年12月31日格式化【yyyy-MM-dd】后:2019-12-31
2019年12月31日格式化【YYYY-MM-dd】后: 2020-12-31

其次将日期改为2022再看一下运行效果:

yaml 复制代码
2022年12月31日格式化【yyyy-MM-dd】后:2022-12-31
2022年12月31日格式化【YYYY-MM-dd】后: 2022-12-31

【🍌】疑惑

纳尼,为啥2019的时候会不一致呢,yyyyYYYY究竟有和区别呢❓

【🍑】答疑

赶快查一下文档:

【y:year-of-era】正正经经的年,即元旦过后才算入下一年;

【Y:week-based-year】表示当天周所属的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年;

【🌰】举例

就比如说2019年12月31日, 12月31日所在的这一周是跨年的一周,而 12月31日 是周二,那使用 YYYY 的话会显示 2020,使用 yyyy 则会显示2019,因为 yyyy 从 1月1日 才开始算是 2020。而2022年12月31日, 12月31日所在的这一周(周六)非跨年的一周,那不管使用 YYYY 还是yyyy都会显示 2022。

【🍐】总结

这虽然是个很小的知识点,但是也有很多人栽到坑里,记录一下,愿永无 bug~

相关推荐
爱勇宝2 分钟前
第 1 章:别把“需求文档”当成真正的需求
前端·后端·程序员
IT_陈寒5 小时前
闭包陷阱让我加了两天班,JavaScript你真行
前端·人工智能·后端
易协同低代码6 小时前
通达OA核心类库TD类深度解析
后端
Gopher_HBo6 小时前
Go语言学习笔记(十八)Gin处理Session
后端
谭光志7 小时前
工具塞满上下文窗口怎么办?深度拆解 AI Agent Tool Search 按需加载实现原理
前端·后端·ai编程
她说..7 小时前
Java 默认值设置方式
java·开发语言·后端·springboot
foggyprojects7 小时前
从0开始,一句话启动AI DataAgent
后端·数据分析·ai编程
郡杰7 小时前
一些基础和问题解决
后端
陈随易7 小时前
前端项目部署只要30秒
前端·后端·程序员
YIAN7 小时前
从零手写文件读取 MCP 服务:一文吃透 Model Context Protocol 全链路通信原理
前端·后端·mcp