1. 程式人生 > 程式設計 >golang時間字串和時間戳轉換的案例

golang時間字串和時間戳轉換的案例

1. 獲取當前時間字串和時間戳

package main
import (
  "fmt"
  "time"
)
func main() {
  now := time.Now().UTC()
  // 顯示時間格式: UnixDate = "Mon Jan _2 15:04:05 MST 2006"
  fmt.Printf("%s\n",now.Format(time.UnixDate))
  // 顯示時間戳
  fmt.Printf("%ld\n",now.Unix())
  // 顯示時分:Kitchen = "3:04PM"
  fmt.Printf("%s\n",now.Format("3:04PM"))
}

更多時間格式

const (
    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"
)

2. 時間字串解析成時間格式

package main
import (
  "fmt"
  "time"
)
func main() {
  timeStr := "2018-01-01"
  fmt.Println("timeStr:",timeStr)
  t,_ := time.Parse("2006-01-02",timeStr)
  fmt.Println(t.Format(time.UnixDate))
}

3. 獲取當天零點時間戳

方法1

package main
import (
  "fmt"
  "time"
)
func main() {
  timeStr := time.Now().Format("2006-01-02")
  t,timeStr)
  fmt.Println(t.Format(time.UnixDate))
  //Unix返回早八點的時間戳,減去8個小時
  timestamp := t.UTC().Unix() - 8*3600
  fmt.Println("timestamp:",timestamp)
}

方法2

package main
import (
  "fmt"
  "time"
)
func main() {
  now := time.Now()
  t,_ := time.ParseInLocation("2006-01-02",now.Format("2006-01-02"),time.Local)
  timestamp := t.Unix()
  fmt.Println(timestamp)
}
/*
time.Local本地時區
  var Local *Location = &localLoc
以及UTC時區
  var UTC *Location = &utcLoc
還可以替換成指定時區
  //func LoadLocation(name string) (*Location,error)
  loc,_ := time.LoadLocation("Europe/Berlin")
If the name is "" or "UTC",LoadLocation returns UTC. If the name is "Local",LoadLocation returns Local.
*/

補充:Golang中獲取當天0點的格式化時間

如下所示:

EndDateLimit := time.Now().Format("2006-01-02 00:00:00")

取當天某個整點的時間戳

now := time.Now().Unix()
muteEndTime := time.Date(time.Now().Year(),time.Now().Month(),time.Now().Day(),8,time.Local).Unix()
muteStartTime := time.Date(time.Now().Year(),22,time.Local).Unix()

本地當前時間戳(10位)

fmt.Println(time.Now().Unix()) //1468479251

本地當前時間戳(19位)

fmt.Println(time.Now().UnixNano()) //1468480006774460462

時間戳轉時間

fmt.Println(time.Unix(1389058332,0).Format("2006-01-02 15:04:05")) //2014-01-07 09:32:12

時間轉時間戳

fmt.Println(time.Date(2014,1,7,5,50,4,time.Local).Unix())

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。