摘要:文章來源通用時間管理模塊,封裝了常用的時間日期相關的方法。并支持自定義的日期格式化語法,格式化語法類似的語法。示例,自定義時間格式化語法在該示例中,我們給定了四種格式,并將當前時間用這四種格式轉換后打印出來。
文章來源:http://gf.johng.cn/494387
通用時間管理模塊,封裝了常用的時間/日期相關的方法。并支持自定義的日期格式化語法,格式化語法類似PHP的date語法。
使用方式:
import "gitee.com/johng/gf/g/os/gtime"
方法列表: godoc.org/github.com/johng-cn/gf/g/os/gtime
時間格式gtime模塊最大的特點是支持自定義的時間格式,參考PHP日期時間格式語法,以下是支持的時間格式語法列表:
方法列表:
type Time func New(t ...time.Time) *Time func NewFromStr(str string) *Time func NewFromStrFormat(str string, format string) *Time func NewFromStrLayout(str string, layout string) *Time func NewFromTime(t time.Time) *Time func NewFromTimeStamp(timestamp int64) *Time func Now() *Time func (t *Time) Add(d time.Duration) *Time func (t *Time) AddDate(years int, months int, days int) *Time func (t *Time) Clone() *Time func (t *Time) Format(format string) string func (t *Time) Layout(layout string) string func (t *Time) Local() *Time func (t *Time) Microsecond() int64 func (t *Time) Millisecond() int64 func (t *Time) Nanosecond() int64 func (t *Time) Round(d time.Duration) *Time func (t *Time) Second() int64 func (t *Time) String() string func (t *Time) ToLocation(location *time.Location) *Time func (t *Time) ToTime() time.Time func (t *Time) Truncate(d time.Duration) *Time func (t *Time) UTC() *Time
創(chuàng)建gtime.Time對象可以通過標準庫time.Time對象、Unix時間戳、時間字符串(如:2018-07-18 12:01:00)、自定義時間字符串(需要給定格式,支持自定義格式及標準庫格式)。
示例1,自定義時間格式化語法package main import ( "fmt" "gitee.com/johng/gf/g/os/gtime" ) func main() { formats := []string{ "Y-m-d H:i:s.u", "D M d H:i:s T O Y", "Time is: h:i:s a", "2006-01-02T15:04:05.000000000Z07:00", } t := gtime.Now() for _, f := range formats { fmt.Println(t.Format(f)) } }
在該示例中,我們給定了四種format格式,并將當前時間用這四種格式轉換后打印出來。執(zhí)行后,輸出結果如下:
2018-07-22 11:17:13.797 Sun Jul 22 11:17:13 CST +0800 2018 Time is: 11:17:13 am 2006-01-02CST15:04:05.000000000Z07:00
可以看到,這個示例演示了幾個需要注意的地方:
如果使用的字母與格式化字符沖突時,可以使用符號轉移該字符,這樣時間格式解析器會認為該字符不是格式化字符,而是普通字母。因此這里的第三個字符串示例輸出為:Time is: 11:17:13 am
使用Format方法接收的是自定義的時間格式化語法(如:Y-m-d H:i:s),而不是標準庫的事件格式語法(如:2006-01-02 15:04:05),且兩種語法不能混用,因此在這里的第四個字符串示例中原樣輸出參數(shù)值;
示例2,標準庫時間格式化語法package main import ( "fmt" "gitee.com/johng/gf/g/os/gtime" ) func main() { formats := []string{ "2006-01-02 15:04:05.000", "Mon Jan _2 15:04:05 MST 2006", "Time is: 03:04:05 PM", "2006-01-02T15:04:05.000000000Z07:00 MST", } t := gtime.Now() for _, f := range formats { fmt.Println(t.Layout(f)) } }
在該示例中,我們使用四種標準庫的時間格式化語法格式化當前的時間并輸出結果到終端。執(zhí)行后,輸出結果為:
2018-07-22 11:28:13.945 Sun Jul 22 11:28:13 CST 2018 Time is: 11:28:13 AM 2018-07-22T11:28:13.945153275+08:00 CST
根絕這個示例,也有幾個需要說明的地方:
自定義時間格式化語法與標準庫時間格式化語法并不沖突,前者使用Format方法,后者使用Layout語法進行格式化,相互獨立,互不沖突,無法混用;
標準庫的時間格式化語法自有特點,是不是感覺有點復雜;
示例3,時間對象鏈式操作package main import ( "fmt" "gitee.com/johng/gf/g/os/gtime" "time" ) func main() { // 去年今日 fmt.Println(gtime.Now().AddDate(-1, 0, 0).Format("Y-m-d")) // 去年今日,UTC時間 fmt.Println(gtime.Now().AddDate(-1, 0, 0).Format("Y-m-d H:i:s T")) fmt.Println(gtime.Now().AddDate(-1, 0, 0).UTC().Format("Y-m-d H:i:s T")) // 下個月1號凌晨0點整 fmt.Println(gtime.Now().AddDate(0, 1, 0).Format("Y-m-d 00:00:00")) // 2個小時前 fmt.Println(gtime.Now().Add(-time.Hour).Format("Y-m-d H:i:s")) }
執(zhí)行后,輸出結果為:
2017-07-22 2017-07-22 11:42:36 CST 2017-07-22 03:42:36 UTC 2018-08-22 00:00:00 2018-07-22 10:42:36
該示例比較簡單,便不多贅述。
工具方法godoc.org/github.com/johng-cn/gf/g/os/gtime
func Date() string func Datetime() string func Microsecond() int64 func Millisecond() int64 func Nanosecond() int64 func Second() int64 func SetInterval(t time.Duration, callback func() bool) func SetTimeZone(zone string) error func SetTimeout(t time.Duration, callback func()) func StrToTime(str string) (time.Time, error) func StrToTimeFormat(str string, format string) (time.Time, error) func StrToTimeLayout(str string, layout string) (time.Time, error)
方法比較簡單,比較常用的是以下幾個方法;
Second用于獲得當前時間戳,Millisecond、Microsecond及Nanosecond用于獲得當前的毫秒、微秒和納秒值;
Date和Datetime用于獲得當前日期及當前日期時間;
SetTimeZone用于設置當前進程的全局時區(qū);
其他方法說明請查看接口文檔;
簡單示例:
package main import ( "fmt" "gitee.com/johng/gf/g/os/gtime" ) func main() { fmt.Println("Date :", gtime.Date()) fmt.Println("Datetime :", gtime.Datetime()) fmt.Println("Second :", gtime.Second()) fmt.Println("Millisecond:", gtime.Millisecond()) fmt.Println("Microsecond:", gtime.Microsecond()) fmt.Println("Nanosecond :", gtime.Nanosecond()) }
執(zhí)行后,輸出結果為:
Date : 2018-07-22 Datetime : 2018-07-22 11:52:22 Second : 1532231542 Millisecond: 1532231542688 Microsecond: 1532231542688688 Nanosecond : 1532231542688690259
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29076.html
摘要:配置示例如下其中,為本地的應用監(jiān)聽端口。編譯程序跨平臺交叉編譯是的特點之一,可以非常方便地編譯出我們需要的目標服務器平臺的版本,而且是靜態(tài)編譯,非常方便地解決了運行依賴問題。 文章來源:https://goframe.org/deploymen... 一、獨立部署 使用GF開發(fā)的應用程序可以獨立地部署到服務器上,設置為后臺守護進程運行即可。這種模式常用在簡單的API服務項目中。 服務器...
摘要:前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點分為新聞熱點開發(fā)教程工程實踐深度閱讀開源項目巔峰人生等欄目。背后的故事本文是對于年之間世界發(fā)生的大事件的詳細介紹,闡述了從提出到角力到流產的前世今生。 前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點;分為新聞熱點、開發(fā)教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡迎...
摘要:巔峰人生年老兵思路上的轉變,遠比單純提升技術更有價值本文節(jié)選自趙成教授在極客時間開設的趙成的運維體系管理課,是其對自己十年技術生涯的回顧與總結。趙成教授來自美麗聯(lián)合集團,集團旗下兩大主力產品是蘑菇街和美麗說,目前負責管理集團的技術服務團隊。 showImg(https://segmentfault.com/img/remote/1460000012476504?w=1240&h=826...
閱讀 3281·2021-11-25 09:43
閱讀 2084·2021-09-22 10:02
閱讀 3310·2021-09-06 15:00
閱讀 2298·2019-08-30 15:56
閱讀 2347·2019-08-30 15:54
閱讀 3224·2019-08-30 14:14
閱讀 2258·2019-08-29 17:25
閱讀 2902·2019-08-29 17:16