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

大叔我北漂十多年,一直没有摇到北京的车牌,每周都需要通过一个 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;只要本周跨年,那么这周就算入下一年;

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

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

(0)

相关推荐

  • Javascript将字符串日期格式化为yyyy-mm-dd的方法

    这篇文章主要介绍的是利用Javascript将字符串日期格式化为yyyy-mm-dd的方法,下面话不多说了,参考如下代码 function formatDate(date) { var d = new Date(date), month = '' + (d.getMonth() + 1), day = '' + d.getDate(), year = d.getFullYear(); if (month.length < 2) month = '0' + month; if (day.lengt

  • js时间戳转yyyy-MM-dd HH-mm-ss工具类详解

    在web开发中,我们经常需要用js将时间戳转yyyy-MM-dd HH-mm-ss类似的格式,这样才适合我们的观感,那么我们该如何在js中将时间戳转换成这种格式呢?其实很简单,我们开发一个时间戳工具类,如下: 第一种:最简单的是一个js时间格式的转换函数方法 function formatDateTime(inputTime) { var date = new Date(inputTime); var y = date.getFullYear(); var m = date.getMonth()

  • 正则表达式实现将MM/DD/YYYY格式的日期转换为YYYY-MM-DD格式

    本文实例讲述了正则表达式实现将MM/DD/YYYY格式的日期转换为YYYY-MM-DD格式的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <html> <head><title>正则表达式</title></head> <body> <a href="./">返回列表</a> <form action="<? echo $PHP_SELF; ?&

  • js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)

    如下所示: function formatDate(date,fmt) { if(/(y+)/.test(fmt)){ fmt = fmt.replace(RegExp.$1,(date.getFullYear()+'').substr(4-RegExp.$1.length)); } let o = { 'M+':date.getMonth() + 1, 'd+':date.getDate(), 'h+':date.getHours(), 'm+':date.getMinutes(), 's+'

  • js字符串日期yyyy-MM-dd转化为date示例代码

    最近遇到一个问题,就是获取表单中的日期往后台通过json方式传的时候,遇到Date.parse(str)函数在ff下报错: NAN 找了些资料,发现是由于Date.parse()函数对日期格式有要求:详细参考 Date.parse函数 对于js操作日期: 创建一个日期对象: var objDate=new Date([arguments list]); 参数形式有以下5种: 复制代码 代码如下: view plainnew Date("month dd,yyyy hh:mm:ss");

  • JS验证日期的格式YYYY-mm-dd 具体实现

    复制代码 代码如下: function checkInputDate(obj){   var   strDate=obj.value;    var  re =/^(\d{4})-(\d{2})-(\d{2})$/;    if(re.test(strDate))//判断日期格式符合YYYY-MM-DD标准    {     var   dateElement=new   Date(RegExp.$1,parseInt(RegExp.$2,10)-1,RegExp.$3);      if(!(

  • Winform之TextBox输入日期格式验证yyyy-mm-dd

    复制代码 代码如下: private void button1_Click(object sender, EventArgs e)        {            string s = textBox1.Text.ToString();            bool b = ValidateDataTime(s);            string rs = "";            if (b)            {                rs = &qu

  • 匹配yyyy-mm-dd日期格式的的正则表达式

    其实我也很头疼正则表达式,百度了一些资料,总结一下,这里留个备份吧. 要考虑的问题:合法的日期是多少:每个月的天数不一样:闰年的问题.... 1.合法的日期:MSDN上规定--在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间 查看http://msdn.microsoft.com/zh-cn/library/system.datetime(VS.80).aspx 2.闰年的概念:百

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

    大叔我北漂十多年,一直没有摇到北京的车牌,每周都需要通过一个 APP 办理"进京证",当我办理 19 年最后一次进京证的时候,APP 给出了这样的提示: 日期显示:"2020-12-31"! 车友群里面立马有人不淡定了,虽然大家都猜出来,这应该是 APP 的 Bug,但还是难免要吐槽一下. 那么产生这个 Bug 的原因是什么呢?其实很简单,就是 把 yyyy-MM-dd 写成了 YYYY-MM-dd . 如果对时间处理不那么熟悉的程序员看到这里,会认为 yyyy 和

  • input框中自动展示当前日期yyyy/mm/dd的实现方法

    直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>input框中自动展示当前日期</title> </head> <body> <input type="text" id="input"> <script>

  • 程序员应该投资的10件事

    1.  关注你的健康 毫无疑问,软件开发是一项最需要久坐的工作之一,每天在电脑前要坐 8 到 16 个小时,中间几乎没有休息,这就很容易长肉.而肥胖很很可能会引起其它的疾病,心脏病就是其中一种严重的疾病.当然,你可以通过一些锻炼避免它,比如花点儿钱去办一张健身卡. 长时间不符合人体工程学的打字姿势,会造成软件开发人员重复性的肌肉损伤,比如腕管综合征.你应该每隔几个小时的打字后就活动伸展一下手腕,防止这样的损伤,或者选择买带有手腕保护功能的鼠标和键盘.总盯着屏幕也会给你的眼睛带来压力,这就是为什么

  • 在职程序员为啥比不过在野程序员

    在职程序员为啥比不过在野程序员1.在职程序员必须天天完成公司没完没了的 毫无技术含量的任务,在野的不需要.2.在职程序员是为了谋生而写程序,拿的钱少的只能抽烟5块钱以下的香烟.在野的要么是学生要么家里有钱,自然更加有灵感3.在职程序员一般单身,在野的一般有2个以上女朋友.成功男人背后都有个女人,4.在职程序员接个私单左藏右藏怕被公司知道.在野的接业务那叫soho一族.5.成为在职程序员之前天天学习技术,上网学习技术文章.在职后除了看boss的任务邮件.连英文manual都看不懂了.6.成为在职程

  • 程序员的八种境界,你在哪一境?

    如果将程序员分为本文的8种类型,你会是哪一种呢? 在求职的时候,相信很多人都被问过这样的问题,"你对自己未来5年的职业规划是怎么样的?" 每当我被问起这个问题的时候,我的脑海里总是浮现出TwistedSister乐队1984年拍摄的一段视频里的这个场景:一位老师对着他的学生大喊,"我想要你告诉我,不,是告诉全班同学,你究竟想要过怎样的生活?" 注:TwistedSister是一支源自美国纽约的摇滚乐队,成立于1970年代早期.后来经过将近10年的奋斗,他们在80年代

  • 腾讯QQ php程序员面试题目整理

    说在前面: 1.以下题目,除了编程任务外其他都需要写在给你提供的草纸上.纸张是珍贵的地球资源,请节约使用.编程任务在有相应的环境时,会要求上机书写,实在没有条件,就只能写在草纸上了. 2.时间: 基础任务+进阶任务+设计任务 = 90分钟 编程任务 = 60分钟 基础任务: 1.请列举你能想到的UNIX信号,并说明信号用途. 2.请列举.你能想到的所有的字符串查找算法,并加注释简单说明. 3.有一个IP地址(192.168.0.1),请写出其32位无符号整数形式. 4.写出.你能想到的所有HTT

  • 五个PHP程序员工具

    Phing - 一个项目构建系统 Phing 是一个基于Apache ANT 的项目构建系统.它的名字是一个拗口的语句首字母缩写 - PHing Is Not GNU make .Phing可以做传统构建系统比如 GNU make 能做的任何事情,同时没有陡峭的学习曲线. 在phing(以及其他的构建系统)背后的思想是评估一系列相关性,然后执行一系列PHP类去正确的安装和配置一个应用系统.构建过程用一个简单的XML配置文件控制.Out of the box, phing内置可以执行一系列替换(比

  • 程序员必备的10大健康装备! 我们要工作更要健康!

    前言 做为程序员,为了实现理想而奋斗不懈,每天对着电脑辐射坐在工位上拼搏8小时甚至更久,这种如同机器旁边的机器般的工作对于健康的损耗何其之大?再这么下去,还真得应了:"职务不高,工资不高,血压血脂血糖高:政治不突出,业务不突出,腰椎盘突出"这种亚健康状态,最可怕的是技术人员平均寿命都有点惊悚,就怕最后"出师未捷身先死,长使英雄泪满襟".是时候呼吁一下健康的问题了!废话不说了,进入正题吧.本次的带来的是:程序员必备的10大健康装备,Let's go! 装备1:沙袋 &

  • 程序员编程知识经验总结

    不知道你有没有听说过所谓编程知识也是有半衰期的?这个半衰期限很多人普遍认为是5年.也就是说,5年以后你现在所学的知识将会有一半被淘汰. 感觉听上去也算合情合理.毕竟,新的编程语言和技术在源源不断地面世.但是我要告诉你,编程语言比很多人想得都要"长寿". 语法不是难点 对于Java程序员,学习Python就像说英语的去学习法语.当然这两者是毫无关联的.但是相同的是,都需要学习新的语法.语法只是表面上的不同,所有的核心概念都是相通的. 无论你换哪种编程语言去写程序,我们都可以借鉴其相似的类

随机推荐