golang中time包的使用


一、代碼

package main;
 
import (
    "time"
    "fmt"
)
 
func main() {
    //time.Time代表一個納秒精度的時間點
    var t time.Time;
    //返回當前時間
    t = time.Now();
    fmt.Printf("%v\n", t);
    //反回所在時區
    fmt.Printf("%v\n", t.Location());
    //返回UTC時間和UTC時區
    fmt.Printf("%v %v\n", t.UTC(), t.UTC().Location());
    //同上,In()返回指定時區的時間
    fmt.Printf("%v %v\n", t.In(time.UTC), t.In(time.UTC).Location());
    //返回當地時區的時間
    fmt.Printf("%v %v\n", t.Local(), t.Local().Location());
 
    //根據時間戳返回本地時間
    //參數分別表示秒數和納秒數
    t2 := time.Unix(1487780010, 0);
    fmt.Println(t2);
 
    //根據指定時間返回time.Time
    //分別指定年,月,日,時,分,秒,納秒,時區
    t3 := time.Date(2017, time.Month(5), 26, 15, 30, 20, 0, t.Location());
    fmt.Println(t3);
 
    //格式化輸出時間
    t4 := time.Now();
    fmt.Println(t4.Format("2006-01-02 15:04:05"));
 
    //獲取時間信息
    t5 := time.Now();
    //返回日期
    fmt.Println(t5.Date());
    //返回年
    fmt.Println(t5.Year());
    //返回月
    fmt.Println(t5.Month());
    //返回日
    fmt.Println(t5.Day());
    //返回星期
    fmt.Println(t5.Weekday());
    //返回ISO 9601標准下的年份和星期編號
    fmt.Println(t5.ISOWeek());
    //返回時分秒
    fmt.Println(t5.Clock());
    //返回小時
    fmt.Println(t5.Hour());
    //返回分鍾
    fmt.Println(t5.Minute());
    //返回秒
    fmt.Println(t5.Second());
    //返回納秒
    fmt.Println(t5.Nanosecond());
    //返回一年中對應的天
    fmt.Println(t5.YearDay());
    //返回時區
    fmt.Println(t5.Location());
    //返回時區的規范名,時區相對於UTC的時間偏移量(秒)
    fmt.Println(t5.Zone());
    //返回時間戳
    fmt.Println(t5.Unix());
    //返回納秒時間戳
    fmt.Println(t5.UnixNano());
 
    //時間的比較與計算
    t6 := time.Now();
    //是否零時時間
    fmt.Println(t6.IsZero());
    //t6時間在t5時間之后,返回真
    fmt.Println(t6.After(t5));
    //t5時間在t6時間之前,返回真
    fmt.Println(t5.Before(t6));
    //時間是否相同
    fmt.Println(t6.Equal(t6));
    //返回t6加上納秒的時間
    fmt.Println(t6.Add(10000));
    //返回兩個時間之差的納秒數
    fmt.Println(t6.Sub(t5));
    //返回t6加1年,1月,1天的時間
    fmt.Println(t6.AddDate(1, 1, 1));
 
    //時間的序列化
    t7 := time.Now();
    //序列化二進制
    bin, _ := t7.MarshalBinary();
    //反序列化二進制
    t7.UnmarshalBinary(bin)
    fmt.Println(t7);
    //序列化json
    json, _ := t7.MarshalJSON();
    fmt.Println(string(json));
    //反序列化json
    t7.UnmarshalJSON(json);
    fmt.Println(t7);
    //序列化文本
    txt, _ := t7.MarshalText();
    fmt.Println(string(txt));
    //反序列化文本
    t7.UnmarshalText(txt);
    fmt.Println(t7);
    //gob編碼
    gob, _ := t7.GobEncode();
    t7.GobDecode(gob);
    fmt.Println(t7);
 
    //時間段time.Duration
    dur := time.Duration(6666666600000);
    //返回字符串表示
    fmt.Println(dur.String());
    //返回小時表示
    fmt.Println(dur.Hours());
    //返回分鍾表示
    fmt.Println(dur.Minutes());
    //返回秒表示
    fmt.Println(dur.Seconds());
    //返回納秒表示
    fmt.Println(dur.Nanoseconds());
 
    //時區time.Location
    //返回時區名
    fmt.Println(time.Local.String());
 
    //通過地點名和時間偏移量返回時區
    fmt.Println(time.FixedZone("Shanghai", 800));
 
    //通過給定時區名稱,返回時區
    loc, _ := time.LoadLocation("Asia/Shanghai");
    fmt.Println(loc);
 
    //阻塞當前進程3秒
    time.Sleep(time.Second * 3);
 
    //定時器time.Timer
    //創建一個1秒后觸發定時器
    timer1 := time.NewTimer(time.Second * 1);
    <-timer1.C;
    fmt.Println("timer1 end");
 
    //1秒后運行函數
    time.AfterFunc(time.Second * 1, func() {
        fmt.Println("wait 1 second");
    });
    time.Sleep(time.Second * 3);
 
    //打點器time.Ticker
    //創建一個打點器,在固定1秒內重復執行
    ticker := time.NewTicker(time.Second);
    num := 1;
    for {
        if num > 5 {
            //大於5次關閉打點器
            ticker.Stop();
            break;
        }
        //否則從打點器中獲取chan
        select {
        case <-ticker.C:
            num++;
            fmt.Println("1 second...");
        }
    }
}

 

#補充代碼
now := time.Now()
// 10分鍾前
m, _ := time.ParseDuration("-1m")
m1 := now.Add(m)
fmt.Println(m1)

// 8個小時前
h, _ := time.ParseDuration("-1h")
h1 := now.Add(8 * h)
fmt.Println(h1)

// 一天前
d, _ := time.ParseDuration("-24h")
d1 := now.Add(d)
fmt.Println(d1)

// 10分鍾后
mm, _ := time.ParseDuration("1m")
mm1 := now.Add(mm)
fmt.Println(mm1)

// 8小時后
hh, _ := time.ParseDuration("1h")
hh1 := now.Add(hh)
fmt.Println(hh1)

// 一天后
dd, _ := time.ParseDuration("24h")
dd1 := now.Add(dd)
fmt.Println(dd1)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM