如何在Go lang中生成随机日期?

Rah*_*bhu -5 time date go

time.Date(2009, 11, 17, 20, 34, 58, 651387237, time.UTC)
Run Code Online (Sandbox Code Playgroud)

上面的代码为我们提供了一个时间戳,但是,如果我只想分别获取日期部分和时间部分,该怎么办?是否可以使用split()?

mko*_*iva 10

您可以使用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)
}
Run Code Online (Sandbox Code Playgroud)

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

  • 好点@JamesAntill,我已经更新了我的答案,但为了我的辩护,我无意在不了解更多问题的情况下提供成熟的解决方案,我只想指出“数学/兰德”可以用于随机日期之类的东西,我不知道这是否是OP正在寻找的东西。 (3认同)
  • 它有效,但分布不均匀.例如.3月1日出现的次数要多得多.即使您明确地将月份限制为有效数字,您只需更改错误分布,2月份的日期将被选择得比他们应该更多. (2认同)