2017-04-19 56 views
-7
time.Date(2009, 11, 17, 20, 34, 58, 651387237, time.UTC) 

上面的代碼給了我們一個時間戳,但是,如果我想只提取不包含時間的日期部分,反之亦然?如何在Go lang中生成隨機日期?

+3

是什麼_ 「從這個時間戳篩選這次」 _是什麼意思?你想從'time.Time'值中取回數字'651387237'?什麼隨機日期?在什麼範圍? – icza

+0

@icza我想得到一個隨機的日期,說2009年5月22日。我怎麼得到這個? –

+0

什麼是_range_你想要隨機日期?最短和最長日期? – icza

回答

4

您可以使用math/rand生成隨機日期如下:

import (
    "fmt" 
    "math/rand" 
    "time" 
) 

func randate() time.Time { 
    min := time.Date(1970, 1, 0, 0, 0, 0, 0, time.UTC).Unix() 
    max := time.Date(2070, 1, 0, 0, 0, 0, 0, time.UTC).Unix() 
    delta := max - min 

    sec := rand.Int63n(delta) + min 
    return time.Unix(sec, 0) 
} 

https://play.golang.org/p/x1CK6nIO-v

+0

這是一種可接受的方式來生成一個隨機的日期,不應該被標記下來。 – reticentroot

+2

它的工作原理,但它並不均勻分佈。例如。 3月1日會比應該更頻繁地出現。即使你做了明確的將月份限制爲有效數字的解決方案,那麼只需更改2月份的錯誤分佈和日期就會比他們應該選擇的更多。 –

+1

好點@JamesAntill我已經更新了我的答案,但對於我的辯護,我不打算在不知道更多關於該問題的情況下提供全面的解決方案,我打算做的就是指出'math/rand '可以用於諸如隨機日期之類的事情,無論這是OP正在尋找的東西,我不知道。 – mkopriva