如何評價golang的time Format方法一定要用2006 01 02 15 04 05作引數?

時間 2021-05-12 23:00:25

1樓:Diamond Mine

用血的教訓告訴大家,這個設計真的有點坑。 某個需求修改,程式設計師a需要格式化時間,順手去網上抄了個格式化串 2006-01-02 03:04:

05 。 乍一看,也沒啥大問題,code review也通過了。

結果一上線,發現hour錯了,應該用 15:04 (24小時制) ,而不是 03:04 (12小時制),慌了。

雖然說用 %H 之類的也會出錯,但這一串數字不好好記,真的容易混淆。

2樓:胡昂

我能想到的唯一原因是:佔位符方案存在被用來做時間格式無關的事情,不夠清真

比如:time

.strftime

('日期: %Y-%m-%d)

那幾位連 try catch finally 都看不慣給「優化」了,何況這個

3樓:苳冬

其實了解過後還是很容易的只要記住2006就可以可,接下來月日時分秒分別是1,2,3,4,5。

覺得YYYY-MM-dd HH:mm:ss好用的只是因為,他是乙個統一的格式包括linux以及除了golang之外的語言基本用的都是這種方法,但各種之間又稍有不同。

但他YYYY和yyyy的意義是不一樣的,MM和mm不一樣,HH和hh又不一樣。我覺得golang更容易被記住(1,2,3,4,5,6,7,六是年份,七是時區)。

兩種各有優勢吧,字母能表示更多的東西,比如有些可以表示第幾周之類的。golang有更多的形式,比如月份星期可以用字母表示。

4樓:Evopop

沒有學過這種表示方法的會很容易認為是乙個具體的時間,然後會有很多疑問為什麼一定要寫2023年?2023年可以嗎?真的不是很直觀,而且有時會有看錯的情況發生。

還是傳統yyyy-MM-dd HH:mm:ss看起來比較舒服一些。至少不會看錯,一眼就能看出是乙個格式化字串,看到很多人說不太好記這種,我覺得很奇怪這麼好記怎麼就不好記了?

yyyy = year

MM = mouth

dd = day

HH = hour

mm = minute

ss = second

因為月和分都是M開頭的單詞,所以用大M表示月份,小m表示分鐘。這很難?比你那個什麼一堆奇怪的數字不好多了?

至於為什麼小時用的大寫H呢?因為大寫HH是24小時制,小寫hh是12小時制。

再來看看go語言的格式化字串,「2006-01-02 15:04:05」我真第一眼把他看成了乙個具體的時間,而且這個時間有點老,哈哈,15年前了

想在GO語言中使用類似YYYY風格的格式化字串也是可以的,推薦乙個第三方庫https://

非常好用,我的強迫症終於治好了,那個2006怎麼看怎麼難受

5樓:Hellert

這個文件裡面其實有說明,就是用了1234567順序數字,年份在後面,是因為西方的日期書寫年份就是在後面,並不是咱們中中國人習慣的年月日形式,習慣就好了。

yyyymmdd這種形式其實並不完美,尤其裡面的mm容易有歧義,用過多種語言的人應該有體會,不同語言有不同的意義,有的時候不得不去查文件。反之golang的這種可以避免歧義。

6樓:木匠劈柴

不管是用諸如 Y% 這樣的佔位符表示年份,還是用 go 2006 這樣表示年份,本質都是佔位符。每個人的思維方式不一樣,記憶習慣不一樣,有些人覺得前者容易記憶,個人感覺後者容易記憶,而前者複雜一些,比如我經常記混淆 m% mm% M%。

7樓:

真要方便記憶,用'2000-01-01 00:00:00'不更容易?

估計它這方法,是某個特殊的日子吧?反正不是第一版發布的日子。開始設計的時間?這是程式設計師的浪漫。

8樓:王瑞華

這個應該是作者沒有國際主義精神,或者意識裡覺得99%的人類都用的美國這套時間表示方法吧……

Jan 2 15:04:05 2006 MST要是我們中中國人設計的,可能一拍腦門設計成

2023年2月3日 16:05:06 吧

什麼,時區呢? 中中國人設計語言哪會考慮時區,都按照中國時區來吧。

你看,作者至少還是考慮了時區的,不錯了。

補充 golang 的生日是 2009 年 11 月 10 日不信謠不傳謠

9樓:

這個只是Go開發者自己的約定,也就是他們覺得這樣很好記。理解了其實也沒什麼難記的,之所以覺得彆扭是因為從其他語言轉過來的,沒有這種習慣。

不過從通用性來說,Go這一套的確沒有通用佔位符更容易接受。我們從Go下面的官方注釋可以理解,按照英語寫法,的確是1,2,3,4,5,6,-7按順序排的,只不過對於其他語言的時間寫法,理解起來就困難了。

// The layout string used by the Parse function and Format method

// shows by example how the reference time should be represented.

// We stress that one must show how the reference time is formatted,

// not a time of the user's choosing. Thus each layout string is a

// representation of the time stamp,

// Jan 2 15:04:05 2006 MST

// An easy way to remember this value is that it holds, when presented

// in this order, the values (lined up with the elements above):

// 1 2 3 4 5 6 -7

// There are some wrinkles illustrated below.

10樓:波羅學

設計者認為這樣更容易記憶,為什麼說容易記憶呢?理由如下:

2006 表示年份,好像是 Go 開始設計的年份,而後面 1 2 3 4 5 6 7,通過簡單的順序就可以記憶。如果要表示 pm,就可以用 15(3 表示 am),而且如果月份希望用英文表示的話,將 1 改為 January,簡寫 Jan,星期的話,只需要 Mon、Monday 表示簡稱全稱。

如果清楚知道這個記憶方式,還是能夠理解的,但事實是多數人都不知道,我曾經聽到的更多的說法是,這個 Go 語言誕生的日子。而且就算知道了這個解釋,寫起來是會方便點,但另乙個問題是,數字畢竟沒有字母直觀,讀起來依然費勁。

說了一些直觀感受,總的來說,還是有點尷尬,初心是好,但還需要大家了解和慢慢適應,才能體會到這個好處。

如何評價小青龍輝子的《time》?

裡面有一句歌詞 我發現我早已經長大 我發現我早不說謊話 我發現我早不說謊話 改成我發現我早習慣謊話或我發現我早聽慣謊話 會更好,因為謊話只會隨著年紀的增加而越來越多 而不是越來越少。 子午 個人認為第四期裡最好聽的歌 副歌部分直擊我們這些80,90後的心 再沒騙自己的理由,時光如刀不再溫柔 一路走汗...

如何評價golang 1 7?

DamonChen 1 ssa新增進去了。2 編譯時間變短了 比1.4還是長 3 生成檔案變小了 4 可以生成二進位制的庫了 實驗 5 vendor機制預設了 6 把x net context修改到標準庫了,看了下介面實現,有一部分改變了,所以如果你自己的介面有依賴,可能編譯不過了 7 修改了不少的...

如何學習golang?

張繼瑀 基礎 Go語言程式設計 許式偉 web Go web程式設計 謝孟軍 提公升 Go語言學習筆記 雨痕 然後去擼Go原始碼當中runtime的原始碼就可以了 大傑哥 入門 Go語言聖經 https docs.hacknode.org gopl zh index.html 高階 Go語言高階程式...