Redian新闻
>
一个由 “ YYYY-MM-dd ” 引发的惨案 !

一个由 “ YYYY-MM-dd ” 引发的惨案 !

公众号新闻

前言

在使用一些 App 的时候,竟然被我发现了一个应该是由于前端粗心而导致的 bug,在 2019.12.30 出发,结果 App 上显示的是 2020.12.30(吓得我以为我的订单下错了,此处是不是该把程序员拉去祭天了)。

鉴于可能会有程序员因此而被拉去祭天,而我以前学 Java 的时候就有留意过这个问题,所以我还是把这个问题拿出来说一下,希望能尽量避免这方面的粗心大意(毕竟这种问题也很难测出来)。

正文

public class DateTest {
 public static void main(String[] args) {
     Calendar calendar = Calendar.getInstance();
     calendar.set(2019, Calendar.AUGUST, 31);
     Date strDate = calendar.getTime();
     DateFormat formatUpperCase = new SimpleDateFormat("yyyy-MM-dd");
     System.out.println("2019-08-31 to yyyy-MM-dd: " + formatUpperCase.format(strDate));
     formatUpperCase = new SimpleDateFormat("YYYY-MM-dd");
     System.out.println("2019-08-31 to YYYY/MM/dd: " + formatUpperCase.format(strDate));
 }
}

我们来看下运行结果:

2019-08-31 to yyyy-MM-dd: 2019-08-31
2019-08-31 to YYYY/MM/dd: 2019-08-31

如果我们日期改成 12.31:

2019-12-31 to yyyy-MM-dd: 2019-12-31
2019-12-31 to YYYY-MM-dd: 2020-12-31

问题就出现了是吧,虽然是一个小小的细节,但是用户看了也会一脸懵,但是我们作为开发者,不能懵啊,赶紧文档查起来:

y:year-of-era;正正经经的年,即元旦过后;

Y:week-based-year;只要本周跨年,那么这周就算入下一年;就比如说今年(2019-2020) 12.31 这一周是跨年的一周,而 12.31 是周二,那使用 YYYY 的话会显示 2020,使用 yyyy 则会从 1.1 才开始算是 2020。

这虽然是个很小的知识点,但是也有很多人栽到坑里,各位学完可以记录一下咯。我在这里祝愿各位码代码时如有神助,永远没有 bug~

如果本文对你有帮助的话,请不要吝啬你的赞,谢谢!


PS:如果觉得我的分享不错,欢迎大家随手点赞、在看。

 关注公众号:Java后端编程,回复下面关键字 


要Java学习完整路线,回复  路线 

缺Java入门视频,回复 视频 

要Java面试经验,回复  面试 

缺Java项目,回复: 项目 

进Java粉丝群: 加群 


PS:如果觉得我的分享不错,欢迎大家随手点赞、在看。

(完)




加我"微信获取一份 最新Java面试题资料

请备注:666不然不通过~


最近好文


1、再见了 Shiro!

2、无意中发现了一位清华妹子的资料库!

3、Spring Boot + Gzip 压缩超大 JSON 对象,传输大小减少一半!

4、牢记这16个SpringBoot 扩展接口,写出更加漂亮的代码

5、聊聊大厂都怎么防止重复下单?



最近面试BAT,整理一份面试资料Java面试BAT通关手册,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:关注公众号并回复 java 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ♡

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
1.34亿中国单身青年,是家长口中的惨还是真香?「查缺补漏」,DDD 核心概念梳理时间匆匆,岁月如梭华人家庭美国之旅变噩梦!外卖司机驾车致一死两伤 看手机引发惨案《尼罗河上的惨案》:让阿加莎告诉你,爱的另一面是什么今年最美德语词“Kuddelmuddel”是什么意思?DDD 落地难?这三个迭代让你从入门到进阶 | 极客时间【收藏】【最新DDL】24暑期实习申请全开!四大暑期实习DDL最全盘点!一上映就破亿!撕破最大尺度,震惊全国的惨案,拍出来了…一个不起眼的病史,引发的麻醉风波榴莲千层蛋糕引发的“商战”!两巨头已“杀疯”,战况又有重大更新:涉及这些城市→5132 血壮山河之武汉会战 信罗战役 5另一个角度!朱令案:一场豪门恩怨引发的血案?!比食不果腹更惨的是腹不裹食悲剧!93岁华妇惨死身亡 又是锂电池引发的火灾!400刀Desktop(i7-7700k/16g ddr4 2666/gtx 1060 6g/120g ssd/1t hdd/wDDD 对决:事务脚本 vs 领域模型,哪个才是业务优化的终极方案?一个 List.of 引发的“血案”一文彻底吃透 DDD 最全建模落地方法论!(附实例)| 极客时间干掉复杂代码 — DDD 与 CQRS 才是黄金组合KDD 2023 | 因果启发的可解释框架:大模型解释的高效之路加拿大森林大火居然还在烧!有人想用AI减少这样的惨剧……佛州9岁孩童意外射杀6岁孩童!这是本不该发生的惨剧!美联储引发的动荡才刚刚显现?警惕未来几周市场陷入混乱!别浪费机会!这样填写Common App的Additional Information,让你的美本申请更出色!美股正身处一个由国债支配的世界里DDD死党:查询模型的本质迄今为止最完整的DDD实践第九章第一节 分权制衡地方自治的共和政体悲剧!93岁纽约华妇不幸身亡! 又是锂电池引发的火灾!四川一起因早恋引发的惨案,给家长一个沉重警示!改变世界的马赛克解密DDD:领域事件--系统解耦的终极武器美光发布 128GB DDR5 RDIMM 内存:采用 32Gb 芯片,速度可达 8000 MT/s400刀Desktop(i7-5820k/32gram ddr4/gtx 980/120g ssd/1t hdd/wifi
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。