一、获取当前时间
在计算时间差之前,我们需要获取当前时间。Go语言提供了time包来操作时间相关的功能。使用`time.Now()`函数可以获取当前的本地时间。package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println(now)
}
运行以上代码,输出当前本地时间。
输出结果:
2021-05-13 14:08:28.6728118 +0800 CST m=+0.006991501
二、计算时间差
Go语言提供了Sub方法来计算时间差。传入两个时间参数,Sub方法会自动计算时间差,并返回Duration类型的结果。Duration类型代表时间段,精确到纳秒。package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
later := time.Now().Add(10 * time.Second)
diff := later.Sub(now)
fmt.Println(diff)
}
以上代码中,我们定义了两个时间点即now和later。使用Add方法,在当前时间基础上加上10秒得到later。然后使用Sub方法计算时间差diff,并将结果输出。
输出结果:
10s一般情况下,我们需要以秒为单位来表示时间差。可以使用`diff.Seconds()`来获取以秒为单位的时间差。
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
later := time.Now().Add(10 * time.Second)
diff := later.Sub(now)
fmt.Printf("时间差为 %.0f 秒\n", diff.Seconds())
}
运行以上代码,输出时间差为10秒。
输出结果:
时间差为 10 秒
三、格式化时间
在实际的开发中,我们经常需要将时间以特定的方式进行展示。Go语言提供了Format方法来格式化时间。 使用`time.Now().Format()`方法可以将当前时间以指定的格式进行格式化。package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println(now.Format("2006-01-02 15:04:05"))
}
以上代码将当前时间以“年-月-日 时:分:秒”的格式进行了格式化,并输出结果。
输出结果:
2021-05-13 15:23:21除了预设的时间格式,我们还可以自定义时间格式,可以使用参考时间"Mon Jan 2 15:04:05 -0700 MST 2006"来进行自定义。
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println(now.Format("2006/01/02 15:04"))
}
以上代码将当前时间以“年/月/日 时:分”的格式进行了格式化,并输出结果。
输出结果:
2021/05/13 15:28
四、Unix时间戳
在计算时间差的时候,我们还需要使用Unix时间戳。Unix时间戳是指从1970年1月1日00:00:00开始,到当前时间的总秒数。Go语言通过Unix()方法来获取Unix时间戳。package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
unix := now.Unix()
fmt.Println(unix)
}
以上代码将当前时间转换成Unix时间戳,并输出结果。
输出结果:
1620891338