Go--时间日期相关
1 获取当天零点的时间戳
//当天0点的时间戳 //获取当前时间 t := time.Now() nowTime := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location()) //转换为时间戳格式 timeSamp := nowTime.Unix() fmt.Println(timeSamp)
2 获取次日零点的时间戳
//次日0点的时间戳 timeStr := time.Now().Format("2006-01-02") //fmt.Println(timeStr) //使用Parse 默认获取为UTC时区 需要获取本地时区 所以使用ParseInLocation //t1, _ := time.ParseInLocation("2006-01-02 15:04:05", timeStr+" 23:59:59", time.Local) t2, _ := time.ParseInLocation("2006-01-02", timeStr, time.Local) //fmt.Println(t1.Unix() + 1) fmt.Println(t2.AddDate(0, 0, 1).Unix())
3 获取昨天零点的时间戳
//昨天0点的时间戳 ts := time.Now().AddDate(0, 0, -1) yesterDaytime := time.Date(ts.Year(), ts.Month(), ts.Day(), 0, 0, 0, 0, ts.Location()) yesterDayTimeSamp := yesterDaytime.Unix() fmt.Println(yesterDayTimeSamp)
4 获取当前时间
//获取当前时间(字符串格式) timeStr := time.Now().Format("2006-01-02 15:04:05") fmt.Println(timeStr) //获取今天的日期 timeStr := time.Now().Format("2006-01-02") fmt.Println(timeStr)
5 23:59:59的时间戳
当天:
// 获取当前时间 now := time.Now() // 将时间设置为23点59分59秒 t := time.Date(now.Year(), now.Month(), now.Day(), 23, 59, 59, 0, now.Location()) // 将时间转换为时间戳 timestamp := t.Unix()
昨天:
// 获取当前时间 now := time.Now() // 将时间减去一天 yesterday := now.AddDate(0, 0, -1) // 将时间设置为23点59分59秒 t := time.Date(yesterday.Year(), yesterday.Month(), yesterday.Day(), 23, 59, 59, 0, yesterday.Location()) // 将时间转换为时间戳 timestamp := t.Unix()
次日:
// 获取当前时间 now := time.Now() // 将时间加上一天 tomorrow := now.AddDate(0, 0, 1) // 将时间设置为23点59分59秒 t := time.Date(tomorrow.Year(), tomorrow.Month(), tomorrow.Day(), 23, 59, 59, 0, tomorrow.Location()) // 将时间转换为时间戳 timestamp := t.Unix()
6 判断输入的时间格式,并转换为时间戳
package main import ( "fmt" "regexp" "time" ) // 判断输入的时间是否为日期格式 func isDateFormat(input string) bool { datePattern := `^\d{4}-\d{2}-\d{2}$` // 日期格式的正则表达式模式 match, _ := regexp.MatchString(datePattern, input) return match } // 判断输入的时间是否为日期+时间格式 func isDateTimeFormat(input string) bool { dateTimePattern := `^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$` // 日期+时间格式的正则表达式模式 match, _ := regexp.MatchString(dateTimePattern, input) return match } func main() { input := "2023-07-19 12:00:56" // 输入的时间字符串 // 判断输入的时间是日期格式还是日期+时间格式 isDateFormat := isDateFormat(input) isDateTimeFormat := isDateTimeFormat(input) if isDateFormat { // 如果是日期格式,转换为时间戳 layout := "2006-01-02" // 日期格式的格式 t, err := time.ParseInLocation(layout, input, time.Local) ////使用Parse的话默认为UTC时区,需要使用本地时区,用ParseInLocation() if err != nil { fmt.Println("无法解析日期:", err) return } timestamp := t.Unix() fmt.Println("日期格式的时间戳:", timestamp) } else if isDateTimeFormat { // 如果是日期+时间格式,转换为时间戳 layout := "2006-01-02 15:04:05" // 日期+时间格式的格式 t, err := time.ParseInLocation(layout, input, time.Local) if err != nil { fmt.Println("无法解析日期+时间:", err) return } timestamp := t.Unix() fmt.Println("日期+时间格式的时间戳:", timestamp) } else { fmt.Println("输入的时间格式无效") } }