国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 為什么阿里巴巴要求日期格式化時必須有使用y表示年

為什么阿里巴巴要求日期格式化時必須有使用y表示年

2020-08-06 14:28Hollis在csdn Java教程

這篇文章主要介紹了為什么阿里巴巴要求日期格式化時必須有使用y表示年,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

在Java中進行日期處理大家一定都不陌生,我們經常會需要在代碼中進行日期的轉換、日期的格式化等操作。

而一般我們進行日期格式化的時候都會使用SimpleDateFormat工具,之前我們有一篇文章介紹過SimpleDateFormat的線程安全問題(https://www.hollischuang.com/archives/3017),這一篇文章再來介紹一個和SimpleDateFormat有關,很容易被忽視,而一旦忽視可能導致大故障的問題。

SimpleDateFormat

SimpleDateFormat是Java提供的一個格式化和解析日期的工具類。它允許進行格式化(日期 -> 文本)、解析(文本 -> 日期)和規范化。SimpleDateFormat 使得可以選擇任何用戶定義的日期-時間格式的模式。

在Java中,可以使用SimpleDateFormat的format方法,將一個Date類型轉化成String類型,并且可以指定輸出格式。

?
1
2
3
4
5
6
7
8
9
// 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類型。

?
1
2
3
// String轉Data
 
System.out.println(sdf.parse(dataStr));

日期和時間模式表達方法

在使用SimpleDateFormat的時候,需要通過字母來描述時間元素,并組裝成想要的日期和時間模式。常用的時間元素和字母的對應表(JDK 1.8)如下:

為什么阿里巴巴要求日期格式化時必須有使用y表示年

模式字母通常是重復的,其數量確定其精確表示。如前面我們用過的"yyyy-MM-dd HH:mm:ss"。我們知道其中的y其實是year的縮寫,所以我們都知道使用y來表示年,默認情況下,我們都會使用y而不是Y,那么這兩者之間有何區別呢?一旦用錯了會帶來什么后果呢?

其實在規定中,y表示year,而Y表示Week Year!

什么是Week Year

我們知道,不同的國家對于一周的開始和結束的定義是不同的。如在中國,我們把星期一作為一周的第一天,而在美國,他們把星期日作為一周的第一天。

同樣,如何定義哪一周是一年當中的第一周?這也是一個問題,有很多種方式。

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

為什么阿里巴巴要求日期格式化時必須有使用y表示年

到底哪一周才算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就可以得到一個日期所屬的周屬于哪一年了。

所以,我們通過代碼可以驗證:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 ,這兩者的返回結果大多數情況下都一樣,但是極端情況就會有問題了。

而這一個要求,在《阿里巴巴Java開發手冊》中也有類似的規定:

為什么阿里巴巴要求日期格式化時必須有使用y表示年

好啦,大家快去排查下你的代碼,有沒有'YYYY-MM-dd'這種形式的代碼吧,如果有的話,一定要改掉哦!~

到此這篇關于為什么阿里巴巴要求日期格式化時必須有使用y表示年的文章就介紹到這了,更多相關阿里巴巴日期格式化y表示年內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/hollis_chuang/article/details/107828890

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲在线视频 | 就操成人网 | 97精品视频| 一区二区在线免费观看 | 黄色日本视频 | 亚洲视频免费在线观看 | 中文av一区 | 精品在线一区 | 国产精品视频久久 | 国产欧美久久久久久 | 成人免费xxx在线观看 | 免费成人在线视频网站 | 国产v日产∨综合v精品视频 | 欧美亚洲视频 | 女人高潮特级毛片 | 大桥未久亚洲精品久久久强制中出 | 日韩免费 | 国产激情在线视频 | 91在线观看高清视频 | 久久成人免费 | 日韩av片无码一区二区不卡电影 | 亚洲精品久久久久久下一站 | 欧美成人免费在线 | 久久狠狠| 日本一区二区免费视频 | 蜜臀久久精品99国产精品日本 | 久久精品一区 | 亚洲精品夜夜夜 | 日韩欧美国产精品综合嫩v 日韩a∨精品日韩在线观看 | 免费簧片 | 国产片免费 | 日韩av免费在线播放 | 亚洲免费在线看 | 久久香蕉国产 | 美女毛片 | 欧美狠狠操 | 国产精品99久久久久久动医院 | 极品美女销魂一区二区三区 | 我和我的祖国电影在线观看免费版高清 | 女人性做爰免费网站 | 亚洲久久 |