In our programming process, we often use various service requirements related to time. Here are some basic usages of time in golang.
Golang can use the date and time package time to set the time. How to use golang's date and time package time:
1. The time package contains the time.Time time object and some methods for constructing this time object. Methods (time.Unix(), time.Parse())
2. Golang can be accurate to nanosecond, so the corresponding function return value or parameters are all in nanoseconds. We can use time.ParseDuration( durationString string) friendly generation of nanosecond measurement time span value
3. Golang’s time format string Layout is fixed to 2006-01-02 15:04:05
4. Golang is used by default Local is the local time zone. You can set the time zone through time.LoadLocation(zoneName string) (*Location, error)
Time zone construction/formatting pattern string
time .LoadLocation can load and return a time zone variable
golang uses 2006-01-02 15:04:05 as the format string. Some people say it is the birth time of golang, and some say it is based on month/day/hour/minute/ Seconds/year is 01/02/03(15-12)/04/05/06(2006). You can understand it by yourself
// 构建时区 var timeLocation *time.Location timeLocation, _ = time.LoadLocation("") //UTC timeLocation, _ = time.LoadLocation("UTC") //UTC timeLocation, _ = time.LoadLocation("Local") //Local timeLocation, _ = time.LoadLocation("Asia/Shanghai") //使用时区码 //golang的时间格式化pattern var timeLayout = "2006-01-02 15:04:05"
Current time object
Use the time.Now() method to obtain the current time object. The time object sets the time zone through the time.Now().In() method, or generates a corresponding time zone through timer.Local()/timer.UTC() New time object.
// 获取当前时间对象 var timer time.Time timer = time.Now() // 为时间设定时区 可以通过 timer.Local()/timer.UTC() 快速设定时区 timer.In(timeLocation)
Get second-level timestamp/nanosecond-level timestamp
// 获取当前秒级时间戳 var curTimestamp int64 curTimestamp = timer.Unix() println("current timestamp:" + strconv.FormatInt(curTimestamp, 10)) // 获取当前纳秒及时间戳 1秒=1000毫秒=1000,000微妙=1000,000,000纳秒 var curNanoTimestamp int64 curNanoTimestamp = timer.UnixNano() println("current nano timestamp:" + strconv.FormatInt(curNanoTimestamp, 10))
Get local time time zone/CST standard time/custom format
// 获取本地时间的时区/快速获取时区时间/自定义格式 timeZone, _ := timer.Zone() fmt.Printf("time zone: %s\n", timeZone) fmt.Printf("time location: %s\n", timer.Location()) fmt.Printf("time in local zone: %s\n", timer.Local().String()) fmt.Printf("time in utc zone: %s\n", timer.UTC().String()) fmt.Printf("time: %s\n", timer.String()) fmt.Printf("time formatted: %s\n", timer.Format("2006-01-02 15:04:05")
Get the current year/month/day hour:minute:second nanosecond
// 获取当前的年/月/日 时:分:秒 纳秒 fmt.Printf("current year: %d\n", timer.Year()) fmt.Printf("current month: %d %s\n", timer.Month(), timer.Month()) //返回的Month对象 fmt.Printf("current day: %d\n", timer.Day()) fmt.Printf("current hour: %d\n", timer.Hour()) fmt.Printf("current minute: %d\n", timer.Minute()) fmt.Printf("current second: %d\n", timer.Second()) fmt.Printf("current nanosecond: %d\n", timer.Nanosecond())
Get the current time/date
// 获取当前时间/日期 curHour, curMinute, curSecond := timer.Clock() fmt.Printf("current clock: %d:%02d:%02d\n", curHour, curMinute, curSecond) curYear, curMonth, curDay := timer.Date() fmt.Printf("current date: %d-%02d-%02d\n", curYear, curMonth, curDay)
Edit time/find the time difference between two dates
time.ParseDuration(durationString string) can facilitate us to use semantics to construct a time span value, and the value unit is nanoseconds, such as:
timeDuration, _ := time.ParseDuration("24h")
timeDuration, _ := time.ParseDuration("12m")
timeDuration, _ := time. ParseDuration("6s")
timeDuration, _ := time.ParseDuration("1ms")
timeDuration, _ := time.ParseDuration("1us")
timeDuration, _ := time.ParseDuration("1ns")
// 已当前时间为基增长年/月/日后的时间对象 timerAdded := timer.AddDate(1, 2, 3) curYear, curMonth, curDay = timerAdded.Date() fmt.Printf("current date: %d-%02d-%02d\n", curYear, curMonth, curDay) // 以当前时间为基增长N纳秒后的时间对象 比如增长了一天 timeDuration, _ := time.ParseDuration("24h") timerAdded = timer.Add(timeDuration) // 计算两个时间的差值 返回的是纳秒 按需求自行计算其他单位 // Duration is type of int64 and nanoseconds timeDuration = timerAdded.Sub(timer) fmt.Printf("days duration between %s~%s: %d\n", timerAdded.Format(timeLayout), timer.Format(timeLayout), timeDuration/1000/1000/1000/24/60/60)
Use time string/Unix Timestamp to construct a time object
// 使用时间串获取时间对象 timer, _ = time.Parse(timeLayout, "2018-08-08 08:08:08") // 使用时间串获取时间对象 并设定时区 timer, _ = time.ParseInLocation(timeLayout, "2018-08-08 08:08:08", timeLocation) // 使用Unix时间戳构建时间对象 timer = time.Unix(1552368806, 0) //2019-03-12 13:33:26的Unix时间戳 fmt.Println(timer.Format(timeLayout))
Get the current time is Day of the year and day of the week
Note that Sunday’s Weekday number is 0
// 获取当前时间是本年第几天 本周第几天 fmt.Printf("year day: %d, week day: %d\n", timer.YearDay(), timer.Weekday())
Use the representation string to convert the time span
// 使用表征字符串转换时间跨度 timeDuration, _ = time.ParseDuration("300s") fmt.Printf("nanosecond: %d\n", timeDuration) timeDuration, _ = time.ParseDuration("300us") fmt.Printf("nanosecond: %d\n", timeDuration)
For more golang knowledge, please pay attention to the golang tutorial column.
The above is the detailed content of How to set time in golang. For more information, please follow other related articles on the PHP Chinese website!