漫画:为什么一到年底,部分网站就会出现日期混乱?

news/2024/5/9 23:25:50/文章来源:https://blog.csdn.net/csdnsevenn/article/details/103856218

作者 | 漫话编程

本文经授权转载自漫话编程(ID:mhcoding)


2019年最后一天,在家里看着跨年晚会,享受着这一年最后一天的闲暇时光,女朋友在旁边玩手机。看了一会之后她突然问我一些很奇怪的问题。

于是我拿过他的手机,看到了下面这一幕:

这是微信官方出的公众号管理的APP,上面赫然写着一篇文章的发文日期是2020/12/29。

SimpleDateFormat

SimpleDateFormat是Java提供的一个格式化和解析日期的工具类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。

在Java中,可以使用SimpleDateFormat的format方法,将一个Date类型转化成String类型,并且可以指定输出格式。

// Date转String
Date data = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dataStr = sdf.format(data);
System.out.println(dataStr);

以上代码,转换的结果是:2018-11-25 13:00:00,日期和时间格式由”日期和时间模式”字符串指定。如果你想要转换成其他格式,只要指定不同的时间模式就行了。

在Java中,可以使用SimpleDateFormat的parse方法,将一个String类型转化成Date类型。

// String转Data
System.out.println(sdf.parse(dataStr));

日期和时间模式表达方法

在使用SimpleDateFormat的时候,需要通过字母来描述时间元素,并组装成想要的日期和时间模式。常用的时间元素和字母的对应表(JDK 1.8)如下:

模式字母通常是重复的,其数量确定其精确表示。如前面我们用过的"yyyy-MM-dd HH:mm:ss"。

什么是Week Year

我们知道,不同的国家对于一周的开始和结束的定义是不同的。如在中国,我们把星期一作为一周的第一天,而在美国,他们把星期日作为一周的第一天。

同样,如何定义哪一周是一年当中的第一周?这也是一个问题,有很多种方式。

比如下图是2019年12月-2020年1月的一份日历。

到底哪一周才算2020年的第一周呢?不同的地区和国家,甚至不同的人,都有不同的理解;

  • 1、1月1日是周三,到下周三(1月8日),这7天算作这一年的第一周。

  • 2、因为周日(周一)才是一周的第一天,所以,要从2020年的第一个周日(周一)开始往后推7天才算这一年的第一周。

  • 3、因为12.29、12.30、12.31是2019年,而1.1、1.2、1.3才是2020年,而1.4周日是下一周的开始,所以,第一周应该只有1.1、1.2、1.3这三天。

ISO 8601

因为不同人对于日期和时间的表示方法有不同的理解,于是,大家就共同制定了了一个国际规范:ISO 8601 。

国际标准化组织的国际标准ISO 8601是日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》。

在 ISO 8601中。对于一年的第一个日历星期有以下四种等效说法:

1,本年度第一个星期四所在的星期;

2,1月4日所在的星期;

3,本年度第一个至少有4天在同一星期内的星期;

4,星期一在去年12月29日至今年1月4日以内的星期;

根据这个标准,我们可以推算出:

2020年第一周:2019.12.29-2020.1.4

所以,根据ISO 8601标准,2019年12月29日、2019年12月30日、2019年12月31日这三天,其实不属于2019年的最后一周,而是属于2020年的第一周。

JDK针对ISO 8601提供的支持

根据ISO 8601中关于日历星期和日表示法的定义,2019.12.29-2020.1.4是2020年的第一周。

日常工作中,我们可能有这样的需求:我们希望输入一个日期,然后程序告诉我们,根据ISO 8601中关于日历日期的定义,这个日期到底属于哪一年。

比如我输入2019-12-20,他告诉我是2019;而我输入2019-12-30的时候,他告诉我是2020。

为了提供这样的数据,Java 7引入了「YYYY」作为一个新的日期模式来作为标识。使用「YYYY」作为标识,再通过SimpleDateFormat就可以得到一个日期所属的周属于哪一年了。

所以,我们通过代码可以验证:

public class WeekYearTest {public static void main(String[] args) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat sdf1 = new SimpleDateFormat("YYYY");System.out.println(sdf1.format(sdf.parse("2019-12-01")));System.out.println(sdf1.format(sdf.parse("2019-12-30")));System.out.println(sdf1.format(sdf.parse("2020-01-01")));}
}

输出结果为:

2019
2020
2020

可见, 2019-12-30日因为属于2020年的第一周,所以返回的年份是2020年。

而如果将「YYYY」改成「yyyy」的话,输出结果就为:

2019
2019
2020

因为有这样的情况,所以我们日常开发的时候,如果把y写成了Y,那就可能导致日期输出的结果不符合我们的预期。

当我们要表示日期的时候,一定要使用 yyyy-MM-dd 而不是 YYYY-MM-dd ,这两者的返回结果大多数情况下都一样,但是极端情况就会有问题了。

因为作者的IDEA中安装了<阿里巴巴开发手册的插件>,所以在代码中使用「YYYY」的时候,IDEA会弹出以下提示:

好啦,大家快去排查下你的代码,有没有'YYYY-MM-dd'这种形式的代码吧,如果有的话,一定要改掉哦!~

关于作者:漫话编程,是一个通过漫画+音频的形式讲解枯燥的编程知识的公众号。致力于让编程变得更有乐趣。


 热 文 推 荐 

☞腾讯内部鄙视链!!!

☞B站晚会大火的 140 万个理由!

☞前一天还在聊抢票,第二天就被裁了,年底是互联网行业的寒冬吗?

☞达摩院 2020 预测:工业互联网超融合来袭!

☞“一百万行Python代码对任何人都足够了”

☞漫画:什么是 哥德巴赫猜想?

☞万字长文回望2019:影响区块链行业发展的9大事件

你点的每个“在看”,我都认真当成了喜欢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_701440.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度或者Google---SEO优化

google和百度的技术差别: 1.百度还认不清哪个是原创的 2.google蜘蛛不够百度快 4.google排名结果随时变化 流量、权重、权威、内容、用户体验、用户关注度等等细节的排名&#xff0c;已表达了SEO的算法。 重要搜索引擎的网站登录入口地址: http://www.webmasterhome.cn/seo/add…

_网站建站基础第十一课(域名解析服务器环境linux安装宝塔)

在服务器&#xff0c;域名(国内备案)购买好之后&#xff0c;就可以开始搭建网站了&#xff0c;建站要为服务器解析好域名&#xff0c;然后配置好服务器环境&#xff0c;服务器环境就以linux系统宝塔面板为例给大家演示&#xff1a;域名备案成功后&#xff0c;进入服务器商的控制…

御用导航官方网站提醒提示页_电脑上使用便签记录工作计划如何设置闹钟定时提醒?...

平常工作日程事务比较多时&#xff0c;就很容易忘掉一些工作&#xff0c;这个时候很多工作族会选择经常使用的电脑工具来记录每日的工作计划&#xff0c;电脑如何设置闹钟定时提醒工作计划呢&#xff1f;电脑便签可以用来记录工作计划闹钟定时提醒的软件&#xff0c;建议使用敬…

关于大型网站技术演进的思考(七)--存储的瓶颈(7)

本文开篇提个问题给大家&#xff0c;关系数据库的瓶颈有哪些&#xff1f;我想有些朋友看到这个问题肯定会说出自己平时开发中碰到了一个跟数据库有关的什么什么问题&#xff0c;然后如何解决的等等&#xff0c;这样的答案没问题&#xff0c;但是却没有代表性&#xff0c;如果出…

高并发网站解决方案

2019独角兽企业重金招聘Python工程师标准>>> 一个小型的网站&#xff0c;可以使用最简单的html静态页面就实现了&#xff0c;配合一些图片达到美化效果&#xff0c;所有的页面均存放在一个目录下&#xff0c;这样的网站对系统架构、性能的要求都很简单。随着互联网业…

服务器安装织梦网站数据库,DedeCMS数据库及服务器空间更换教程

网站空间不稳定会影响SEO优化的效果&#xff0c;因为会降低搜索引擎对于网站的信任度判断&#xff0c;特别是最近使用香港空间的网站&#xff0c;会经常性遇到网站无法打开&#xff0c;或者打开速度非常慢&#xff0c;为了彻底解决稳定问题&#xff0c;唯有更换服务器空间&…

jar 工程我怎么在网页上url访问某一个方法_url及url参数与seo网站优化的关系

短视频&#xff0c;自媒体&#xff0c;达人种草一站服务首先我还是援引下百度百科关于url的定义。统一资源定位符(Uniform Resource Locator&#xff0c;缩写为URL)是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示&#xff0c;是互联网上标准资源的地址。互联网…

网博士自助建站系统_自助建站的优缺点介绍

自助建站我想大家都不陌生了&#xff0c;如果还不知道自助建站是什么的同学可以去小编之前的文章看看&#xff0c;有简单的介绍。话说回来&#xff0c;虽然自助建站越来越普及了&#xff0c;但是很多企业的老板并不知道自助建站到底和传统建站有什么区别&#xff1f;目前为止&a…

说说建站那些事

建站的初衷 我之前一直在CSDN上写博客(CSDN博客主页)&#xff0c;写了四年。后来认为一个热爱写作的程序猿应该要有一个自己独立站点&#xff0c;于是就有了自己建站的想法。由于建立个人博客站点有下面优点&#xff1a; 能很多其它地了解站点在互联网上执行的主要过程。自定义…

seo说_百度指数看世间沉浮_如何快速排名-互点快速排名_网站关键词排名常见问题 - 搜狗快速排名...

超级排名系统&#xff0c;网站关键词快速排名优化&#xff0c;7-15天关键词排名到首页&#xff0c;PC端和移动端都可以优化&#xff0c;支持百度、搜狗、360、神马等主流搜索引擎。作为SEO人员,当我们在做SEO优化过程中经常会遇到很多问题&#xff0c;需要我们注意的细节也有很…

手机b站封面提取网站_手机b站封面自定义图片大全及获取bilibili视频封面提取网站网址...

B站的封面一直是每个玩B站的up主都十分重视的一环&#xff0c;可是这些封面都是需要自己进行设计的&#xff0c;如果你没有这方面的能力&#xff0c;那么就很难设计出具有美感或者吸引力的封面来了&#xff0c;既然这种方式不行&#xff0c;那么我们就只能采用拿来主义&#xf…

查看JAVA源码的网站

为什么80%的码农都做不了架构师&#xff1f;>>> http://grepcode.com/search?queryUncategorized&start0&entitytype&n 转载于:https://my.oschina.net/monroe/blog/913057

当程序员去相亲网站...... | 每日趣闻

程序员说&#xff1a;“我去交友网站找女朋友去了。”朋友问&#xff1a;“找到了么&#xff1f;”程序员说&#xff1a;“找到了他们网站上的一个Bug……”《原力计划【第二季】- 学习力挑战》正式开始即日起至 3月21日千万流量支持原创作者更有专属【勋章】等你来挑战热 文 推…

Internet Explorer7.0仿冒网站筛选功能的使用

作者:许本新现在是信息时代&#xff0c;互联网是现今人们不可缺少的一种通信和办公工具&#xff0c;但同时互联网上又充满了风险&#xff0c;不仅有名目繁多的病毒、蠕虫和木马程序&#xff0c;还有大量用于窃取个人信息的钓鱼网站和恶意网站。通过各种媒体的长期宣传&#xff…

1、常用资源网站

2019独角兽企业重金招聘Python工程师标准>>> 1、CoreData/SQLite资料http://www.cnblogs.com/kenshincui/p/4077833.html#CoreData 2、ShareSDK各社交平台申请APPkey 的网址及申请流程汇总http://bbs.mob.com/forum.php?modviewthread&tid275&page1&ex…

Slog42_支配vue框架初阶项目之博客网站-单页-默认头像的布局和定位

ArthurSlogSLog-42Year1GuangzhouChinaAug 19th 2018GitHub掘金主页简书主页segmentfault从业之路不同 机缘也不同 人生轨迹由机缘组成 想要有什么样的机缘 也就明白了自己要走的路 开发环境MacOS(High Sierra 10.13.5) 需要的信息和信息源&#xff1a; css 元素框的类型HTML D…

分析手机网站的优势思维结构图_写了100多篇原创文章,我常用的在线工具网站推荐给大家...

摘要不知不觉写博客已经一年多了&#xff0c;累计写了100多篇原创文章&#xff0c;今天给大家分享下我经常使用的在线工具网站&#xff0c;希望对大家有所帮助&#xff01;Markdown Nice支持自定义样式的在线Markdown编辑器&#xff0c;编辑完成后可以一键复制富文本到微信公众…

文科出身敲出 Instagram,被小札“挤”走,建新冠追踪网站,这个程序员有点牛!...

作者 | 年素清责编 | 伍杏玲出品 | 程序人生&#xff08;ID&#xff1a;coder_life&#xff09; Instagram以滤镜和图片质量为核心&#xff0c;是全球最火的在线图片及视频分享的社交应用软件之一&#xff0c;而Instagram也是硅谷的一个传奇。说起来你可能不信&#xff0c;这个…

weui移动商城源码.zip_商城网站建设二次开发需要多久?难度大吗?

很多人在早期建设了当时较为流行的商城网站进行使用&#xff0c;但随着市场的变化以及消费者年龄层的变化&#xff0c;以往的商城形式已经不能帮助商家获得新用户了&#xff0c;这时就需要商家将网站进行二次开发或是重新建设网站。那今天就来看看&#xff0c; 商城网站建设二次…

速卖通关键词挖掘工具_网站优化必备的关键词挖掘工具

关键词挖掘是SEO优化工作过程中不可或缺的一个环节&#xff0c;很多站长经常会因为挖掘不到关键词而苦恼&#xff0c;尤其是在SEO行业竞争日益激烈的大环境下&#xff0c;关键词挖掘问题已经成为网站优化的重中之重。实际上关键词挖掘难度并没有想象中那么高&#xff0c;在海量…