golang中的time详情
簡介
介紹Go 標(biāo)準(zhǔn)庫time常用導(dǎo)出函數(shù),結(jié)構(gòu)體及其方法。
import "time"time包提供顯示和計(jì)算時(shí)間用的函數(shù)。
## 時(shí)間處理類型
Go 中時(shí)間處理依賴的數(shù)據(jù)類型:time.Time,time.Month,time.Weekday,time.Duration,time.Location
time.Time 時(shí)間點(diǎn)
time.Time 代表一個(gè)納秒精度的時(shí)間點(diǎn).
/usr/local/go/src/time/time.go 定義如下:
type Time struct {sec int64 // 從1年1月1日 00:00:00 UTC 至今過去的秒數(shù)nsec int32 // 最近一秒到下一秒過去的納秒數(shù)loc *Location // 時(shí)區(qū) }時(shí)間變量標(biāo)識一個(gè)具體的時(shí)間點(diǎn),演示如下:
var t time.Time // 定義 time.Time 類型變量 t = time.Now() // 獲取當(dāng)前時(shí)間 fmt.Printf("時(shí)間: %v, 時(shí)區(qū): %v, 時(shí)間類型: %T\n", t, t.Location(), t) // 時(shí)間: 2017-02-22 09:06:05.816187261 +0800 CST, 時(shí)區(qū): Local, 時(shí)間類型: time.Time// time.UTC() time 返回UTC 時(shí)區(qū)的時(shí)間 fmt.Printf("時(shí)間: %v, 時(shí)區(qū): %v, 時(shí)間類型: %T\n", t.UTC(), t.UTC().Location(), t) // 時(shí)間: 2017-02-22 01:07:15.179280004 +0000 UTC, 時(shí)區(qū): UTC, 時(shí)間類型: time.Time代碼中應(yīng)使用time.Time 類型值來保存和傳遞時(shí)間,而不能用指針。表示時(shí)間的變量和字段,應(yīng)為time.Time類型,而不是*time.Time類型。
每一個(gè)時(shí)間點(diǎn)都具有時(shí)區(qū)信息,當(dāng)計(jì)算時(shí)間的表示格式時(shí),如Format、Hour和Year等方法,都會考慮該信息。Local、UTC和In方法返回一個(gè)指定時(shí)區(qū)(但指向同一時(shí)間點(diǎn))的Time。修改時(shí)區(qū)信息只是會改變其表示,不會修改被表示的時(shí)間點(diǎn)
time.Month 月份
time.Month代表一年中的某個(gè)月
/usr/local/go/src/time/time.go定義如下:
type Month int const (January Month = 1 + iotaFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember )time.Weekday 星期
time.Weekday代表一周的周幾。
/usr/local/go/src/time/time.go定義如下:
type Weekday int和星期相關(guān)的常量:
const (Sunday Weekday = iotaMondayTuesdayWednesdayThursdayFridaySaturday )time.Duration 時(shí)間段
time.Duration類型代表兩個(gè)時(shí)間點(diǎn)之間經(jīng)過的納秒數(shù),可表示的最長時(shí)間段約為290年。
/usr/local/go/src/time/time.go定義如下:
type Duration int64涉及常量如下:
const (Nanosecond Duration = 1Microsecond = 1000 * NanosecondMillisecond = 1000 * MicrosecondSecond = 1000 * MillisecondMinute = 60 * SecondHour = 60 * Minute )time.Location 時(shí)區(qū)
Location代表一個(gè)地點(diǎn),以及該地點(diǎn)所在的時(shí)區(qū)信息。北京時(shí)間可以使用Asia/Shanghai
/usr/local/go/src/time/zoneinfo.go中定義:
type Location struct {name stringzone []zonetx []zoneTranscacheStart int64cacheEnd int64cacheZone *zone }預(yù)定義時(shí)區(qū)變量:
var UTC *Location = &utcLoc var Local *Location = &localLoctime.Time 方法
介紹time.Time接受者的方法:獲取時(shí)間點(diǎn),獲取時(shí)間相關(guān)信息,時(shí)間比較,計(jì)算和序列化操作
獲取一個(gè)時(shí)間的方法
- func Now() Time {} // 當(dāng)前本地時(shí)間
- func Unix(sec int64, nsec int64) Time {} // 根據(jù)時(shí)間戳返回本地時(shí)間
- func Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time {} // 返回指定時(shí)間
時(shí)間顯示
- func (t Time) UTC() Time {} // 獲取指定時(shí)間在UTC 時(shí)區(qū)的時(shí)間表示
- func (t Time) Local() Time {} // 以本地時(shí)區(qū)表示
- func (t Time) In(loc *Location) Time {} // 時(shí)間在指定時(shí)區(qū)的表示
- func (t Time) Format(layout string) string {} // 按指定格式顯示時(shí)間
獲取日期信息
- func (t Time) Date() (year int, month Month, day int) {} // 返回時(shí)間的日期信息
- func (t Time) Year() int {} // 返回年
- func (t Time) Month() Month {} // 月
- func (t Time) Day() int {} // 日
- func (t Time) Weekday() Weekday {} // 星期
- func (t Time) ISOWeek() (year, week int) {} // 返回年,星期范圍編號
- func (t Time) Clock() (hour, min, sec int) {} // 返回時(shí)間的時(shí)分秒
- func (t Time) Hour() int {} // 返回小時(shí)
- func (t Time) Minute() int {} // 分鐘
- func (t Time) Second() int {} // 秒
- func (t Time) Nanosecond() int {} // 納秒
- func (t Time) YearDay() int {} // 一年中對應(yīng)的天
- func (t Time) Location() *Location {} // 時(shí)間的時(shí)區(qū)
- func (t Time) Zone() (name string, offset int) {} // 時(shí)間所在時(shí)區(qū)的規(guī)范名和想對UTC 時(shí)間偏移量
- func (t Time) Unix() int64 {} // 時(shí)間轉(zhuǎn)為時(shí)間戳
- func (t Time) UnixNano() int64 {} // 時(shí)間轉(zhuǎn)為時(shí)間戳(納秒)
時(shí)間比較與計(jì)算
- func (t Time) IsZero() bool {} // 是否是零時(shí)時(shí)間
- func (t Time) After(u Time) bool {} // 時(shí)間在u 之前
- func (t Time) Before(u Time) bool {} // 時(shí)間在u 之后
- func (t Time) Equal(u Time) bool {} // 時(shí)間與u 相同
- func (t Time) Add(d Duration) Time {} // 返回t +d 的時(shí)間點(diǎn)
- func (t Time) Sub(u Time) Duration {} // 返回 t-u
- func (t Time) AddDate(years int, months int, days int) Time {} 返回增加了給出的年份、月份和天數(shù)的時(shí)間點(diǎn)Time
時(shí)間序列化
- func (t Time) MarshalBinary() ([]byte, error) {} // 時(shí)間序列化
- func (t Time) UnmarshalBinary(data []byte) error {} // 反序列化
- func (t Time) MarshalJSON() ([]byte, error) {} // 時(shí)間序列化
- func (t Time) MarshalText() ([]byte, error) {} // 時(shí)間序列化
- func (t Time) GobEncode() ([]byte, error) {} // 時(shí)間序列化
- func (t Time) GobDecode() ([]byte, error) {} // 時(shí)間序列化
time.Duration 方法
介紹 time.Duration 時(shí)間段接受者的方法:輸出和改變時(shí)間段單位。
- func (d Duration) String() string // 格式化輸出 Duration
- func (d Duration) Nanoseconds() int64 // 將時(shí)間段表示為納秒
- func (d Duration) Seconds() float64 // 將時(shí)間段表示為秒
- func (d Duration) Minutes() float64 // 將時(shí)間段表示為分鐘
- func (d Duration) Hours() float64 // 將時(shí)間段表示為小時(shí)
time.Location 方法
time.Location 時(shí)區(qū)的導(dǎo)出函數(shù)
- func (l *Location) String() string // 輸出時(shí)區(qū)名
- func FixedZone(name string, offset int) *Location // FixedZone 使用給定的地點(diǎn)名name和時(shí)間偏移量offset(單位秒)創(chuàng)建并返回一個(gè)Location
- func LoadLocation(name string) (*Location, error) // LoadLocation 使用給定的名字創(chuàng)建Location
其他方法
- func Sleep(d Duration)// Sleep阻塞當(dāng)前go程至少d代表的時(shí)間段。d<=0時(shí),Sleep會立刻返回
總結(jié)
以上是生活随笔為你收集整理的golang中的time详情的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: golang中的new和make的区别
- 下一篇: golang中的shell