成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go 的時間格式化為什么是 2006-01-02 15:04:05?

開發 后端
沒有什么是完美的!而且,有些東西,有些人認為好,有些人認為很糟糕。Go 也是如此。喜歡 Go 語言的朋友,大概率對其中某些地方不喜歡。比如,你喜歡 Go 中時間格式化固定的 2006-01-02 15:04:05 -0700 嗎?為什么是這么一個時間?今天來一探究竟!

 [[416079]]

大家好,我是 polarisxu。

沒有什么是完美的!而且,有些東西,有些人認為好,有些人認為很糟糕。Go 也是如此。喜歡 Go 語言的朋友,大概率對其中某些地方不喜歡。比如,你喜歡 Go 中時間格式化固定的 2006-01-02 15:04:05 -0700 嗎?為什么是這么一個時間?今天來一探究竟!

01 新手的困惑

無論是各種群里還是網上搜一下,包括國外的,對 2006-01-02 15:04:05 -0700 都很困惑。

一般的困擾主要有:

  • 不知道只能固定要這個時間,換其他的,出來的結果莫名其妙,然后一臉懵逼;
  • 為什么沒有像其他語言一樣,yyyy-mm-dd 這樣的形式?
  • 這個時間有什么特殊意義嗎?為什么挑這么個時間,完全記不住;

這很正常,畢竟這一點上,Go 很另類,也可以說很“奇葩”。甚至有人注冊了一個域名:http://fuckinggodateformat.com/,我也是醉了。。。

但是這真的不好?

02 為什么這么設計?

為什么選擇這個時間?不少人有這樣的疑問。有人猜測是 Go 項目啟動的時間等。但仔細研究,發現 Go Team 還是用心良苦,目的是解決大家記憶問題。

比如常規的 ymd 格式,以 PHP 為例,一般這樣 Y-m-d H:i:s,輸出類似:2021-08-03 09:30:00,但如果我想輸出:21-8-4 9:30:00,你不查手冊,能寫出來嗎?你看看 PHP 文檔中關于 date 格式化的說明,頭有點大,竟然那么多,雖然常用的形式,大部分人都記得,但遇到不怎么常用的,就得查手冊了。

反觀 Go 語言,它直接使用一個具體的時間來當做格式化字符串,需要什么格式,改這個時間格式即可。比如上面的例子,常規方式:2006-01-02 15:04:05,而 21-8-4 9:30:00 這種格式,只需要對應的改變值即可:06-1-2 3:04:05。而且,我查了下,PHP 沒法表示沒有前導零的分鐘數和秒數,而 Go 很容易實現。很顯然,Go 的方式是更合理、更易用的,對于各種變化,也能夠更自如的應對。

只不過,很多人對這個具體的時間覺得記不住。這一點,Go 官方也考慮到了。畢竟采用特殊的時間,目的就是為了解決大家記憶問題,因此要確保這個特殊時間也好記。Go 是這么設計的:

  1. 1: month (January, Jan, 01, etc) 
  2. 2: day 
  3. 3: hour (15 is 3pm on a 24 hour clock) 
  4. 4: minute 
  5. 5: second 
  6. 6: year (2006) 
  7. 7: timezone (GMT-7 is MST) 

剛好是 1 2 3 4 5 6 7,據此進行變化即可。

比如官方定義的常量:

  1. const ( 
  2.     ANSIC       = "Mon Jan _2 15:04:05 2006" 
  3.     UnixDate    = "Mon Jan _2 15:04:05 MST 2006" 
  4.     RubyDate    = "Mon Jan 02 15:04:05 -0700 2006" 
  5.     RFC822      = "02 Jan 06 15:04 MST" 
  6.     RFC822Z     = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone 
  7.     RFC850      = "Monday, 02-Jan-06 15:04:05 MST" 
  8.     RFC1123     = "Mon, 02 Jan 2006 15:04:05 MST" 
  9.     RFC1123Z    = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone 
  10.     RFC3339     = "2006-01-02T15:04:05Z07:00" 
  11.     RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00" 
  12.     Kitchen     = "3:04PM" 

按 ANSIC 標準的日期格式,月、日、時、分、秒、年,最后加 MST 時區。對應就是 1 2 3 4 5 6 7。同時還可以隨意加星期幾。

發現沒有?圍繞著 1 2 3 4 5 6 7 隨意變化,真的不要太爽。我相信你用習慣了會發現 Go 這個設計真的太好了。

03 總結

Go 的設計原則之一:大道至簡。盡量簡介,讓大家開心編程。我認為這個格式化時間的設計也體現了這一點,他們設計的很用心。

知曉了為什么這么設計,我相信你看完這篇文章會從此愛上 Go 的時間格式化形式。

責任編輯:武曉燕 來源: polarisxu
相關推薦

2022-11-28 08:47:43

RobGo格式

2022-11-17 08:47:20

Go特性標準庫

2023-06-13 07:50:49

Gopher格式化時間

2023-11-20 22:26:51

Go開發

2020-11-03 10:21:33

MySQL

2023-03-28 07:26:37

2022-04-18 09:56:49

云自動化網絡安全云安全

2020-06-08 17:00:52

LinuxUSBexFAT

2023-05-29 08:03:41

代碼Go語言

2020-04-07 16:12:56

Go編程語言開發

2020-02-27 21:03:30

調度器架構效率

2024-01-19 07:39:25

Go日期開發

2021-02-23 10:19:46

編程技能開發

2024-07-08 00:01:00

GPM模型調度器

2021-07-26 14:34:02

springboot 時間格式化項目

2022-09-05 08:06:36

SpringBoot時間格式化

2011-07-03 18:28:13

網站優化

2023-12-29 08:01:52

自定義指標模板

2024-07-01 10:16:55

搜索向量數據類型

2022-06-02 08:48:39

Go枚舉器Iota
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美在线综合 | 免费一级黄色电影 | 久久亚洲一区二区三区四区 | 国产欧美精品一区 | 亚洲精品1区 | 久久一区二区三区四区 | 久久成人一区二区三区 | 午夜视频一区 | 国产精品一区二区三区四区 | 日韩精品视频一区二区三区 | 午夜免费网站 | 日韩一级免费大片 | 亚洲国产中文字幕 | 九九热视频这里只有精品 | 在线观看中文字幕 | 中文字幕av第一页 | 韩日在线 | 国产传媒毛片精品视频第一次 | 久久乐国产精品 | 国产精品美女 | 天天拍天天色 | 国产精品女人久久久 | aaa大片免费观看 | 亚洲一区二区中文字幕 | 国产精品成人一区二区三区吃奶 | 国产三级一区二区三区 | 91久久久久久久久久久 | 中文精品一区二区 | 黄瓜av | 欧美精品区 | 亚洲伊人久久综合 | 一区二区三区观看视频 | 国产精品久久久久久吹潮 | 欧美黑人体内she精在线观看 | 国产精品精品视频一区二区三区 | 欧美一区二区三区免费电影 | 日韩在线观看中文字幕 | 亚洲看片网站 | 成人亚洲视频 | 欧美aⅴ| 国产激情视频在线免费观看 |