成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

GoFrame框架之gtime時(shí)間模塊,支持自定義時(shí)間格式化語(yǔ)法

Bryan / 1653人閱讀

摘要:文章來(lái)源通用時(shí)間管理模塊,封裝了常用的時(shí)間日期相關(guān)的方法。并支持自定義的日期格式化語(yǔ)法,格式化語(yǔ)法類似的語(yǔ)法。示例,自定義時(shí)間格式化語(yǔ)法在該示例中,我們給定了四種格式,并將當(dāng)前時(shí)間用這四種格式轉(zhuǎn)換后打印出來(lái)。

文章來(lái)源:http://gf.johng.cn/494387

通用時(shí)間管理模塊,封裝了常用的時(shí)間/日期相關(guān)的方法。并支持自定義的日期格式化語(yǔ)法,格式化語(yǔ)法類似PHP的date語(yǔ)法。

使用方式:

import "gitee.com/johng/gf/g/os/gtime"

方法列表: godoc.org/github.com/johng-cn/gf/g/os/gtime

時(shí)間格式

gtime模塊最大的特點(diǎn)是支持自定義的時(shí)間格式,參考PHP日期時(shí)間格式語(yǔ)法,以下是支持的時(shí)間格式語(yǔ)法列表:

時(shí)間對(duì)象

方法列表:

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對(duì)象可以通過(guò)標(biāo)準(zhǔn)庫(kù)time.Time對(duì)象、Unix時(shí)間戳、時(shí)間字符串(如:2018-07-18 12:01:00)、自定義時(shí)間字符串(需要給定格式,支持自定義格式及標(biāo)準(zhǔn)庫(kù)格式)。

示例1,自定義時(shí)間格式化語(yǔ)法
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格式,并將當(dāng)前時(shí)間用這四種格式轉(zhuǎn)換后打印出來(lái)。執(zhí)行后,輸出結(jié)果如下:

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

可以看到,這個(gè)示例演示了幾個(gè)需要注意的地方:

如果使用的字母與格式化字符沖突時(shí),可以使用符號(hào)轉(zhuǎn)移該字符,這樣時(shí)間格式解析器會(huì)認(rèn)為該字符不是格式化字符,而是普通字母。因此這里的第三個(gè)字符串示例輸出為:Time is: 11:17:13 am

使用Format方法接收的是自定義的時(shí)間格式化語(yǔ)法(如:Y-m-d H:i:s),而不是標(biāo)準(zhǔn)庫(kù)的事件格式語(yǔ)法(如:2006-01-02 15:04:05),且兩種語(yǔ)法不能混用,因此在這里的第四個(gè)字符串示例中原樣輸出參數(shù)值;

示例2,標(biāo)準(zhǔn)庫(kù)時(shí)間格式化語(yǔ)法
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))
    }
}

在該示例中,我們使用四種標(biāo)準(zhǔn)庫(kù)的時(shí)間格式化語(yǔ)法格式化當(dāng)前的時(shí)間并輸出結(jié)果到終端。執(zhí)行后,輸出結(jié)果為:

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

根絕這個(gè)示例,也有幾個(gè)需要說(shuō)明的地方:

自定義時(shí)間格式化語(yǔ)法與標(biāo)準(zhǔn)庫(kù)時(shí)間格式化語(yǔ)法并不沖突,前者使用Format方法,后者使用Layout語(yǔ)法進(jìn)行格式化,相互獨(dú)立,互不沖突,無(wú)法混用;

標(biāo)準(zhǔn)庫(kù)的時(shí)間格式化語(yǔ)法自有特點(diǎn),是不是感覺(jué)有點(diǎn)復(fù)雜;

示例3,時(shí)間對(duì)象鏈?zhǔn)讲僮?/b>
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時(shí)間
    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"))

    // 下個(gè)月1號(hào)凌晨0點(diǎn)整
    fmt.Println(gtime.Now().AddDate(0, 1, 0).Format("Y-m-d 00:00:00"))

    // 2個(gè)小時(shí)前
    fmt.Println(gtime.Now().Add(-time.Hour).Format("Y-m-d H:i:s"))
}

執(zhí)行后,輸出結(jié)果為:

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

該示例比較簡(jiǎn)單,便不多贅述。

工具方法

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)

方法比較簡(jiǎn)單,比較常用的是以下幾個(gè)方法;

Second用于獲得當(dāng)前時(shí)間戳,MillisecondMicrosecondNanosecond用于獲得當(dāng)前的毫秒、微秒和納秒值;

DateDatetime用于獲得當(dāng)前日期及當(dāng)前日期時(shí)間;

SetTimeZone用于設(shè)置當(dāng)前進(jìn)程的全局時(shí)區(qū);

其他方法說(shuō)明請(qǐng)查看接口文檔;

簡(jiǎn)單示例:

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í)行后,輸出結(jié)果為:

Date       : 2018-07-22
Datetime   : 2018-07-22 11:52:22
Second     : 1532231542
Millisecond: 1532231542688
Microsecond: 1532231542688688
Nanosecond : 1532231542688690259

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29076.html

相關(guān)文章

  • Golang項(xiàng)目部署

    摘要:配置示例如下其中,為本地的應(yīng)用監(jiān)聽(tīng)端口。編譯程序跨平臺(tái)交叉編譯是的特點(diǎn)之一,可以非常方便地編譯出我們需要的目標(biāo)服務(wù)器平臺(tái)的版本,而且是靜態(tài)編譯,非常方便地解決了運(yùn)行依賴問(wèn)題。 文章來(lái)源:https://goframe.org/deploymen... 一、獨(dú)立部署 使用GF開(kāi)發(fā)的應(yīng)用程序可以獨(dú)立地部署到服務(wù)器上,設(shè)置為后臺(tái)守護(hù)進(jìn)程運(yùn)行即可。這種模式常用在簡(jiǎn)單的API服務(wù)項(xiàng)目中。 服務(wù)器...

    Tamic 評(píng)論0 收藏0
  • 前端每周清單半年盤(pán)點(diǎn) JavaScript 篇

    摘要:前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開(kāi)發(fā)者了解一周前端熱點(diǎn)分為新聞熱點(diǎn)開(kāi)發(fā)教程工程實(shí)踐深度閱讀開(kāi)源項(xiàng)目巔峰人生等欄目。背后的故事本文是對(duì)于年之間世界發(fā)生的大事件的詳細(xì)介紹,闡述了從提出到角力到流產(chǎn)的前世今生。 前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開(kāi)發(fā)者了解一周前端熱點(diǎn);分為新聞熱點(diǎn)、開(kāi)發(fā)教程、工程實(shí)踐、深度閱讀、開(kāi)源項(xiàng)目、巔峰人生等欄目。歡迎...

    Vixb 評(píng)論0 收藏0
  • Java 總結(jié)

    摘要:中的詳解必修個(gè)多線程問(wèn)題總結(jié)個(gè)多線程問(wèn)題總結(jié)有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升開(kāi)源的運(yùn)行原理從虛擬機(jī)工作流程看運(yùn)行原理。 自己實(shí)現(xiàn)集合框架 (三): 單鏈表的實(shí)現(xiàn) 自己實(shí)現(xiàn)集合框架 (三): 單鏈表的實(shí)現(xiàn) 基于 POI 封裝 ExcelUtil 精簡(jiǎn)的 Excel 導(dǎo)入導(dǎo)出 由于 poi 本身只是針對(duì)于 ...

    caspar 評(píng)論0 收藏0
  • 前端每周清單第 44 期: 2017 JS 調(diào)查報(bào)告、REST 接口實(shí)時(shí)化、ESM 的過(guò)去與未來(lái)

    摘要:巔峰人生年老兵思路上的轉(zhuǎn)變,遠(yuǎn)比單純提升技術(shù)更有價(jià)值本文節(jié)選自趙成教授在極客時(shí)間開(kāi)設(shè)的趙成的運(yùn)維體系管理課,是其對(duì)自己十年技術(shù)生涯的回顧與總結(jié)。趙成教授來(lái)自美麗聯(lián)合集團(tuán),集團(tuán)旗下兩大主力產(chǎn)品是蘑菇街和美麗說(shuō),目前負(fù)責(zé)管理集團(tuán)的技術(shù)服務(wù)團(tuán)隊(duì)。 showImg(https://segmentfault.com/img/remote/1460000012476504?w=1240&h=826...

    MASAILA 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<