Go語言標準庫之time

2022-02-21 02:37:43 字數 3831 閱讀 1254

時間的格式化和解析

package main

import (

"fmt"

"time"

)func main()

輸出結果是

2019-01-01 10:45:502019/01/01 10:45:50

2023年01月01日 10:45:50

在系統中還提供了一些預設的格式

ansic       = "mon jan _2 15:04:05 2006"

unixdate = "mon jan _2 15:04:05 mst 2006"

rubydate = "mon jan 02 15:04:05 -0700 2006"

rfc822 = "02 jan 06 15:04 mst"

rfc822z = "02 jan 06 15:04 -0700" // rfc822 with numeric zone

rfc850 = "monday, 02-jan-06 15:04:05 mst"

rfc1123 = "mon, 02 jan 2006 15:04:05 mst"

rfc1123z = "mon, 02 jan 2006 15:04:05 -0700" // rfc1123 with numeric zone

rfc3339 = "2006-01-02t15:04:05z07:00"

rfc3339nano = "2006-01-02t15:04:05.999999999z07:00"

kitchen = "3:04pm"

// handy time stamps.

stamp = "jan _2 15:04:05"

stampmilli = "jan _2 15:04:05.000"

stampmicro = "jan _2 15:04:05.000000"

stampnano = "jan _2 15:04:05.000000000"

使用方法:

fmt.println(now.format(time.rfc3339))
func parse(layout, value string) (time, error)
t1, err := time.parse("2006-01-02 15:04:05", "2019-01-01 10:54:11")

t2, err := time.parse("2006/01/02 15:04:05", "2019/01/01 10:54:59")

t3, err := time.parse("2023年01月02日 15:04:05", "2023年01月01日 10:54:59")

if err != nil

fmt.println(t1)

fmt.println(t2)

fmt.println(t3)

輸出結果是

2019-01-01 10:54:11 +0000 utc

2019-01-01 10:54:59 +0000 utc

2019-01-01 10:54:59 +0000 utc

獲取時間戳

使用time.nowtime.unixtime.unixnano方法獲取對應的時間戳

sec := now.unix()      //秒

nsec := now.unixnano() //納秒

fmt.println(sec)

fmt.println(nsec)

輸出結果

1537498785

1537498785523262700

t := time.unix(sec, 0)

fmt.println(t)

fmt.println(t.format("2006-01-02 15:04:05"))

輸出結果

2019-01-01 11:05:30 +0800 cst

2019-01-01 11:06:43

獲取當前的日期和時間

year, month, day := now.date()

fmt.println(year, month, day)

fmt.println(year, int(month), day)

fmt.printf("year:%d month:%d day:%d", year, month, day)

hour, minute, second := now.clock()

fmt.println(hour, minute, second)

輸出結果

2019 january 1

2019 1 1

year:2019 month:1 day:1

11 11 34

關於星期

weekday := now.weekday()

fmt.println(weekday) // friday

fmt.println(int(weekday)) //5

輸出結果

friday

5

星期日是0

計算已經過去了多少天

days := now.yearday()

fmt.println(days)

輸出結果

264
計算兩個日期的時間差

date1 := time.date(2017, time.month(1), 1, 0, 0, 0, 0, time.utc)

date2 := time.date(2018, time.month(1), 1, 0, 0, 0, 0, time.utc)

hours := date2.sub(date1).hours()

fmt.println(hours)

between_days := hours / 24

fmt.println(between_days)

輸出結果

8760

365

獲取月份中的天數

time.day()方法是獲取本月之前過去的天數,獲取月份中天數,初始化時天設定為0,就是獲取上月的天數,

月數+1就可以獲取本月的天數

month_days := time.date(now.year(), now.month() + 1, 0, 0, 0, 0, 0, time.utc).day()

fmt.println(month_days)

計算執行的時間

start := time.now()  //程式執行開始

//.... 程式**

duration := time.since(start) //執行結束

fmt.println(duration)

fmt.println(duration.nanoseconds())

輸出結果

18.9889ms

18988900

23 Go語言標準庫之time包

時間和日期是我們程式設計中經常會用到的,本文主要介紹了go語言內建的time包的基本用法。time包提供了時間的顯示和測量用的函式。日曆的計算採用的是公曆。time.time型別表示時間。我們可以通過time.now 函式獲取當前的時間物件,然後獲取時間物件的年月日時分秒等資訊。示例 如下 func...

Go 學習筆記 標準庫之 time 包

go 有很多內建的標準庫,裡面封裝了很多開發中會用到的一些函式,使用這些函式可以簡化 提高開發效率。time 包就是其中之一,它裡面封裝了處理日期時間需要用到的一些功能。今天因為要做乙個功能,稍微了解了一下 time 包,官方文件,暫時先將這個功能裡面需要用到的一些方法記錄下來,以後碰到其他的知識再...

Go語言標準庫之flag

go語言內建的flag包實現了命令列引數的解析,flag包使得開發命令列工具更為簡單。如果你只是簡單的想要獲取命令列引數,可以像下面的 示例一樣使用os.args來獲取命令列引數。package main import fmt os os.args demo func main 將上面的 執行go ...