听说用了YYYY-MM-dd的程序员,前些天都在加班改Bug

 更新时间:2020年01月11日 15:02:01   作者:菜鸟教程  
这篇文章主要介绍了YYYY-MM-dd的实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

大叔我北漂十多年,一直没有摇到北京的车牌,每周都需要通过一个 APP 办理“进京证”,当我办理 19 年最后一次进京证的时候,APP 给出了这样的提示:

日期显示:“2020-12-31”!

车友群里面立马有人不淡定了,虽然大家都猜出来,这应该是 APP 的 Bug,但还是难免要吐槽一下。

那么产生这个 Bug 的原因是什么呢?其实很简单,就是 把 yyyy-MM-dd 写成了 YYYY-MM-dd 。

如果对时间处理不那么熟悉的程序员看到这里,会认为 yyyy 和 YYYY 有什么区别么?在代码里面敲一下,他们的结果也都是相同的啊!

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

但是如果我们把日期改成 2019-12-31 再试试呢?结果产生了差异:

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

那么产生这个问题的原因是什么呢?其实很简单:Y 和 y 实际上代表了不同的含义

  • y:year-of-era;正正经经的年;
  • Y:week-based-year;只要本周跨年,那么这周就算入下一年;

这是开发过程中的一个小细节,一不小心就掉到坑里了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • mybatisPlus 实体类与数据库表映射关系详解

    mybatisPlus 实体类与数据库表映射关系详解

    这篇文章主要介绍了mybatisPlus 实体类与数据库表映射关系详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。
    2022-01-01
  • Java 抽象类和接口的实现

    Java 抽象类和接口的实现

    本文主要介绍了Java 抽象类和接口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2007-03-03
  • Spring中的声明式事务控制详解

    Spring中的声明式事务控制详解

    这篇文章主要介绍了Spring中的声明式事务控制详解,Spring的声明式事务顾名思义就是采用声明的方式来处理事务,这里所说的声明,就是指在配置文件中声明,用在Spring配置文件中声明式的事务处理来代替代码是的处理事务,需要的朋友可以参考下
    2024-01-01
  • Java算法之堆排序代码示例

    Java算法之堆排序代码示例

    这篇文章主要介绍了Java算法之堆排序代码示例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • zookeeper的watch机制原理解析

    zookeeper的watch机制原理解析

    Watcher,异步通知客户端,并且删除哈希表中对应的 Key-Value,这篇文章主要介绍了zookeeper的watch机制详细讲解,需要的朋友可以参考下
    2022-06-06
  • SpringBoot项目导入aliyun oss starter依赖后启动报错问题

    SpringBoot项目导入aliyun oss starter依赖后启动报错问题

    这篇文章主要介绍了SpringBoot项目导入aliyun oss starter依赖后启动报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Spring中@Transactional(rollbackFor=Exception.class)属性用法介绍

    Spring中@Transactional(rollbackFor=Exception.class)属性用法介绍

    这篇文章介绍了Spring中@Transactional(rollbackFor=Exception.class)属性的用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • SpringBoot的启动速度优化

    SpringBoot的启动速度优化

    随着我们项目的不断迭代 Bean 的数量会大大增加,如果都在启动时进行初始化会非常耗时,本文主要介绍了SpringBoot的启动速度优化,感兴趣的可以了解一下
    2023-09-09
  • 详解springboot热启动与热部署

    详解springboot热启动与热部署

    本篇文章主要介绍了详解springboot热启动与热部署,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java日常练习题,每天进步一点点(12)

    Java日常练习题,每天进步一点点(12)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07

最新评论