Random 在Go中生成随机时间戳
我想在过去的相对3年内生成一个随机时间戳,并用以下格式打印出来:Random 在Go中生成随机时间戳,random,go,time,Random,Go,Time,我想在过去的相对3年内生成一个随机时间戳,并用以下格式打印出来:%d/%b/%Y:%H:%M:%S%z 以下是我现在拥有的: package main import ( "strconv" "time" "math/rand" "fmt" ) func randomTimestamp() time.Time { randomTime := rand.Int63n(time.Now().Unix() - 94608000) + 94608000
%d/%b/%Y:%H:%M:%S%z
以下是我现在拥有的:
package main
import (
"strconv"
"time"
"math/rand"
"fmt"
)
func randomTimestamp() time.Time {
randomTime := rand.Int63n(time.Now().Unix() - 94608000) + 94608000
randomNow, err := time.Parse("10/Oct/2000:13:55:36 -0700", strconv.FormatInt(randomTime, 10))
if err != nil {
panic(err)
}
return randomNow
}
func main() {
fmt.Println(randomTimestamp().String())
}
这总是抛出:
panic:parsing time“…”:月超出范围。如何为给定范围生成随机时间戳,然后使用标准库将其转换为所需的字符串格式?不要使用time.Parse。您有一个Unix时间,而不是时间字符串。请改用Unix()
方法。您还可以选择一个最小时间值,例如1/1/1900,并使用add
方法在时间上添加秒的随机持续时间,并传递使用Ticks()方法创建的Duration
这里有一个去操场的链接。请记住,围棋场不支持实际的随机性
package main
import (
"time"
"math/rand"
"fmt"
)
func randomTimestamp() time.Time {
randomTime := rand.Int63n(time.Now().Unix() - 94608000) + 94608000
randomNow := time.Unix(randomTime, 0)
return randomNow
}
func main() {
fmt.Println(randomTimestamp().String())
}