要计算两个日期之间的时间差,例如,一个日期和另一个日期之间的年、月、周、日、小时、分钟、秒、毫秒、微秒、纳秒,请使用 Sub()方法对 time.Time结构。它可以计算出两个日期之间的差异。然后使用内置的方法,你可以确定这个差值中具体的小时、分钟、秒等的数量。
package main
import (
"fmt"
"time"
)
func main() {
firstDate := time.Date(2022, 4, 13, 1, 0, 0, 0, time.UTC)
secondDate := time.Date(2021, 2, 12, 5, 0, 0, 0, time.UTC)
difference := firstDate.Sub(secondDate)
fmt.Printf("Years: %d\n", int64(difference.Hours()/24/365))
fmt.Printf("Months: %d\n", int64(difference.Hours()/24/30))
fmt.Printf("Weeks: %d\n", int64(difference.Hours()/24/7))
fmt.Printf("Days: %d\n", int64(difference.Hours()/24))
fmt.Printf("Hours: %.f\n", difference.Hours())
fmt.Printf("Minutes: %.f\n", difference.Minutes())
fmt.Printf("Seconds: %.f\n", difference.Seconds())
fmt.Printf("Milliseconds: %d\n", difference.Milliseconds())
fmt.Printf("Microseconds: %d\n", difference.Microseconds())
fmt.Printf("Nanoseconds: %d\n", difference.Nanoseconds())
}
没有内置的方法来计算两个日期之间的天数、周数、月数或年数。你必须手动使用
Duration.Hours()方法。
输出
Years: 1
Months: 14
Weeks: 60
Days: 424
Hours: 10196
Minutes: 611760
Seconds: 36705600
Milliseconds: 36705600000
Microseconds: 36705600000000
Nanoseconds: 36705600000000000