听说用了YYYY-MM-dd的程序员,前些天都在加班改Bug
作者:菜鸟教程 发布时间:2023-07-05 17:48:00
标签: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;只要本周跨年,那么这周就算入下一年;
这是开发过程中的一个小细节,一不小心就掉到坑里了。
来源:https://mp.weixin.qq.com/s/Lpm8haWJQfXPSQP40bu4Fw
0
投稿
猜你喜欢
- 以前公司的产品已经上线20多年了,主要是维护,也就是改bug。每周我们Team会从Jira上拿我们可以改的bug,因为每个团队负责的业务范围
- Java 是一门面向对象的编程语言,面向对象的编程语言有四大特征:抽象、封装、继承和多态。而本文介绍的接口和抽象类就是面向对象编程中“抽象”
- 引言一个复杂的分布式系统,用户发起一个请求,这个请求可能调用几十到几百个服务,经过很多业务层,而每个业务又是多个机器集群,一个请求具体被随机
- 基于有了OO的基础后,开始认真学习设计模式!设计模式是java设计中必不可少的!Apple.javapackage strategy;/**
- 很多主流框架都使用了反射技术.像ssh框架都采用两种技术 xml做配置文件+反射技术.与反射有关的类包.java.lang.reflect.
- 本文实例为大家分享了java实现订餐系统的具体代码,供大家参考,具体内容如下import java.util.Scanner;public
- 一、前言最近做的项目由于引入第三方库导致在运行mvn clean package 打jar时,编译出来的 Jar 包很大(服务器多达500M
- 1. 面试第一步,自我介绍。这个自我介绍,在整个面试当中可以说是第一步,如果你能把你想说的重点说出来,把面试官带到你准备好的技术点中,可以说
- 1. JSCH简介JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。你可
- 一、Java IO流1、概念在Java中,把不同的输入源 / 输出源(如:键盘、文件、网络链接等)抽象的表述为“流”(stream)通过 ”
- 本博文参考自https://www.jb51.net/article/100269.htmwww.jb51.net/article/1002
- SpringBoot的web项目,在每一次修改了java文件或者是resource的时候,都必须去重启一下项目,这样的话浪费了很多的时间,实
- 在JAVA中通过synchronized语句可以实现多线程并发。使用同步代码块,JVM保证同一时间只有一个线程可以拥有某一对象的锁。锁机制实
- 简介我们知道Java中Collection接口下的很多集合都是线程不安全的, 比如 java.util.ArrayList不是线程安全的,
- 关于logback日志的详解见这位仁兄的博客:Spring Boot-日志配置(超详细)我在这就开门见山直接介绍我们项目日志的配置使用吧!~
- java -jar设置添加启动参数方法java -jar 参数前后位置说明springboot项目启动的时候可以直接使用java -jar
- 日志输出是所有系统必备的,很多开发人员可能因为常常使用log4j而忽视了JDK logging模块,两者之间是否有联系?是怎样的联系?JDK
- 一般情况下每个spring boot工程启动都有固定的端口,但是固定端口不利用服务的动态扩容,如果在一台服务器上需要对同一个服务进行多实例部
- //直接插入排序void DirectInsertionSort(int* arr, in
- 一、引言使用原生的zookeeper时候会遇到watcher一次注册生效一次等情况,因此使用curatorcurator是Netflix公司