昨天在v站上看到这个关于YYYY-MM-dd的使用而出现Bug的帖子(v2ex.com/t/633650)非常有意思,所以拿过来分享一下。

在任何编程语言中,对于时间、数字等数据上,都存在很多类似这种平时一切OK,特定时间、特定环境出问题的情况。出现这种问题的根本原因还是我们对于各种数据结构的细节定义在开始的时候都不太注意,都是从每一次使用问题出现之后才开始有了“刻骨铭心”的认识。

不论昨天你是否也经历了这样的Bug,还是没有经历的读者,希望看到这篇文章之后,对这个细节可以上点心,避免日后因为这个细节而犯错。

下面就来一起看看这个问题的表现和原因吧:

问题表现

问题原因

YYYYweek-based-year,表示:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。所以2019年12月31日那天在这种表述方式下就已经 2020 年了。而当使用yyyy的时候,就还是 2019 年。

相关说明

  • https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#patterns
  • https://nakedsecurity.sophos.com/2019/12/23/serious-security-the-decade-ending-y2k-bug-that-wasnt/

欢迎关注我的公众号:程序猿DD,获得独家整理的学习资源和日常干货推送。

如果您对我的专题内容感兴趣,也可以关注我的博客:didispace.com

昨天你用的 YYYY-MM-dd 被同事锤了吗?相关推荐

  1. 【怒怼老乔】苹果手机ios系统居然特喵的不支持日期yyyy-MM-dd HH:mm:ss.ms,只支持 yyyy/MM/dd HH:mm:ss

    苹果手机ios系统居然特喵的 不支持日期yyyy-MM-dd HH:mm:ss.ms, 只支持yyyy/MM/dd HH:mm:ss 我只能用 .replace(/\-/g,'\/'); 来替换掉了, ...

  2. 得到 yyyy/mm/dd 格式时间

    在做项目的时候:很多文件都是按数据添加时间的年/月/日的目录保存 做的时候发现不能直接 DateTime(yyyy-mm-dd).ToString("yyyy/MM/dd")得到 ...

  3. yyyy/MM/dd转换成yyyy-MM-dd,yyyy-MM-dd转换成yyyy/MM/dd你会了吗

    第一种yyyy/MM/dd转换成yyyy-MM-dd 知识点来自官网,可查阅: split() 方法用于把一个字符串分割成字符串数组 join()方法用于把数组中的所有元素放入一个字符串 var my ...

  4. 将字符串格式yyyy/MM/dd的字符串转为日期,格式“yyyy-MM-dd“

    将字符串格式yyyy/MM/dd的字符串转为日期,格式"yyyy-MM-dd" public static String strToDateFormat(String date) ...

  5. Js日期yyyy-MM-dd与yyyy/MM/dd的区别

    在JavaScript中日期yyyy-MM-dd格式与yyyy/MM/dd为不同的日期表达式 console.log('2020-10-29', new Date('2020-10-29')) con ...

  6. yyyy/mm/dd变成yyyy-mm-dd

    当电脑的日期格式不是yyyy/mm/dd的形式的时候,假使是yyyy-mm-dd格式, 即便在程序中格式化日期格式yyyy/mm/dd,但是做成的日期却是yyyy-mm-dd. 不能只是单纯的Shor ...

  7. Kettle5.2 couldn't convert string [...] to a date using format [yyyy/MM/dd HH:mm:ss.SSS]

    使用kettle出现 couldn't convert string [...] to a date using format [yyyy/MM/dd HH:mm:ss.SSS] 试了各种方法,最后发 ...

  8. YYYY/MM/dd 日期format的幺蛾子

    其实YYYY/MM/dd 和yyyy/MM/dd是不同的,而且YYYY/MM/dd 可能会出现年份的大bug,下面直接上代码 @org.junit.Testpublic void dateYYYY() ...

  9. Python写,将输入的yyyy/mm/dd格式的日期显示为yyyy年mm月dd日。

    7.(程序题)编程将输入的yyyy/mm/dd格式的日期显示为yyyy年mm月dd日. str = input("请输入日期:") length=len(str) if str[6 ...

  10. C# 中的年月日时分秒 yyyy MM dd HH mm ss

    C# 中的年月日时分秒 yyyy MM dd HH mm ss 其中大小写含义不同,不能混用 年:yyyy 月:MM 日:dd(1-31) DD(0-365) 时:hh:12小时制 HH:24小时制 ...

最新文章

  1. MediaWiki安装
  2. 赛门铁克:“高度怀疑”WannaCry的幕后黑手是朝鲜
  3. Java学习福利,入门到精通学习路线分享
  4. 广东工业大学专项设计_2020年广东工业大学本科招生计划发布!
  5. java 导出excel 例子_java导出Excel例子
  6. JPA与Hibernate的关系
  7. 计算机应用类型分类 余额宝属于,按计算机应用的类型分类,余额宝属于。
  8. 如何使用 vCenter 警报自动监控 VSAN 组件阈值?
  9. 第三周课程总结&实验报告一
  10. C# Windows Phone App 开发,自制LockScreen 锁定画面类别(Class),从【网路图片】、【Assets资源】、【UI】修改锁定画面。...
  11. mysql知识思维导图
  12. 自适应滤波器的FPGA实现
  13. Visual C#程序设计基础pdf
  14. 首个智能制造领域5G专网建成:广东联通+格力+华为共同打造!
  15. 修改服务器端口后防火墙要设置吗,服务器设置完防火墙需要重启吗
  16. java开发平板_用Android平板来写代码 - Termux 环境搭建
  17. 以太坊智能合约之如何执行智能合约?
  18. 开源项目-房屋租赁管理系统
  19. BS架构网页响应时间参考
  20. 离散型调节变量——该如何设定模型?

热门文章

  1. ubuntu下beyond compare的使用
  2. opencv-人眼检测,人眼跟踪
  3. 农村中学扩建工程全套CAD施工图哪里找?
  4. 用c语言如何制作抖动窗口,C语言实现自动给QQ好友发窗口抖动
  5. win10升级win11后office文件无法直接打开的问题
  6. DBA需要掌握的技能和经验
  7. 静态对象线程java_慢速多线程Java应用程序:这是由于访问静态对象引起的吗?...
  8. 滑动窗口—至多包含两个不同字符的最长子串(leetcode 159)
  9. 计算机无法启动bios,开机进入bios无法进入系统怎么办_电脑开机就进入bios的解决方法...
  10. DropDownList 控件