Home > Article > Backend Development > How to generate random datetime in Golang?
How to generate random date and time in Golang? The simplest way is to use time.Now() and the rand function to randomly add or subtract seconds from the current time. For finer control, you can use the time.Parse and strconv functions to generate random dates and times by passing a custom format string.
#How to generate random date and time in Golang?
Generating random dates and times in Golang is very easy, and this tutorial will cover a few different methods, along with concrete steps with real-life examples.
Use time.Now() and rand functions
The easiest way is to use the time.Now()
function to get the current time, and then Use the rand
function to randomly add or subtract seconds.
package main import ( "fmt" "time" "math/rand" ) func main() { // 获取当前时间并转换为时间戳 now := time.Now().Unix() // 设置随机偏移量(以秒为单位) offset := rand.Int63n(3600) // 1 小时范围内的随机偏移量 // 根据偏移量添加或减去秒数 randomTime := time.Unix(now+offset, 0) // 格式化并打印随机日期时间 fmt.Println(randomTime.Format("2006-01-02 15:04:05")) }
Use time.Parse and strconv
If you need more fine-grained control, you can use time.Parse
and strconv
The function passes a custom format string.
package main import ( "fmt" "time" "strconv" ) func main() { // 设置随机年份范围 minYear := 1970 maxYear := 2023 // 生成随机年份 randomYear := minYear + rand.Intn(maxYear-minYear+1) // 生成随机月份 randomMonth := 1 + rand.Intn(12) // 生成随机日期 randomDate := 1 + rand.Intn(28) // 生成随机小时 randomHour := rand.Intn(24) // 生成随机分钟 randomMinute := rand.Intn(60) // 生成随机秒数 randomSecond := rand.Intn(60) // 格式化随机日期和时间 randomTimeStr := fmt.Sprintf("%d-%02d-%02d %02d:%02d:%02d", randomYear, randomMonth, randomDate, randomHour, randomMinute, randomSecond) // 转换字符串为时间对象 randomTime, _ := time.Parse("2006-01-02 15:04:05", randomTimeStr) // 打印随机日期时间 fmt.Println(randomTime.Format("2006-01-02 15:04:05")) }
The above is the detailed content of How to generate random datetime in Golang?. For more information, please follow other related articles on the PHP Chinese website!