10

Goで時刻を出力します

time.Now().String()

なので

2012-12-18 06:09:18.6155554 +0200 FLEST

また

2009-11-10 23:00:00 +0000 UTC

http://play.golang.org/p/8qwq9U_Ri5

どのように解析するのですか?

FLESTFinland Latvian Estonian Standard Time これらの国にいるわけではなく、あらゆる種類のタイムゾーンを取得できると思います。それを解析するための統一された方法やパターンが見つかりませんtime.Parse

4

3 に答える 3

12

time.Parse()などのフォーマット文字列を受け入れますが、 timeで定義された定数2006-01-02 15:04:05 -0700 MSTの 1 つを使用する方が簡単な場合があります。

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

時間を格納またはエンコードする方法として文字列を使用している場合 (制限のあるエンコード形式など)、Unix timeの使用を検討することをお勧めします。int64そうすれば、ナノ秒数を保持する場合は、1 つまたは 2 つを格納できます。

于 2012-12-30T20:37:40.207 に答える
10
package main

import (
"fmt"
"time"
)

func main() {
    fmt.Println(time.Now())
    date := "2009-11-10 23:00:00 +0000 UTC"
    t, err := time.Parse("2006-01-02 15:04:05 -0700 MST", date)
        if err != nil {
                fmt.Println("parse error", err.Error())
        }
        fmt.Println(t.Format(time.ANSIC))
}

プレイグラウンド: http://play.golang.org/p/hvqBgtesLd

http://golang.org/src/pkg/time/format.go?s=15404:15450#L607のソース コードを参照してください。

于 2012-12-30T20:23:19.157 に答える
5

time.String のドキュメントでは、「2006-01-02 15:04:05.999999999 -0700 MST」という形式が使用されています。最初は、解析に同じ形式を使用することです。

ただし、タイムゾーンが問題になる場合があります。time.String で生成されたことがわかっているが、他のタイム ゾーンで生成された時刻を解析する必要がある場合は、他のタイム ゾーンの zoneinfo が必要です。LoadLocation のドキュメントを参照してください。zoneinfo を取得できない場合、システムにインストールできない場合、または新しい未知のタイム ゾーンで失敗するリスクを負うことができない場合は、time.String 形式は適していません。別の形式でタイム スタンプを取得するか、文字列からタイム ゾーンを削除して、変更された文字列を変更された形式で解析する必要があります。

于 2013-01-01T14:07:48.567 に答える