Come analizzare correttamente fuso orario codici

Nell’esempio qui sotto, il risultato è sempre “[data] 05:00:00 +0000 UTC”, indipendentemente dal fuso orario che hai scelto per il parseAndPrint funzione. Cosa c’è di sbagliato con questo codice? Il tempo dovrebbe cambiare a seconda del fuso orario che si sceglie. (Go Giochi per bambini server a quanto pare sono configurati nel fuso orario UTC).

http://play.golang.org/p/wP207BWYEd

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    parseAndPrint(now, "BRT")
    parseAndPrint(now, "EDT")
    parseAndPrint(now, "UTC")
}

func parseAndPrint(now time.Time, timezone string) {
    test, err := time.Parse("15:04:05 MST", fmt.Sprintf("05:00:00 %s", timezone))
    if err != nil {
        fmt.Println(err)
        return
    }

    test = time.Date(
        now.Year(),
        now.Month(),
        now.Day(),
        test.Hour(),
        test.Minute(),
        test.Second(),
        test.Nanosecond(),
        test.Location(),
    )

    fmt.Println(test.UTC())
}
è necessario postare qui il codice, non solo un link.
Mi dispiace. Fatto!
Non so molto su di Go – ma ti rendi conto che il fuso orario abbreviazioni non sono univoci, giusto? Ci sono 5 diverse interpretazioni del “CST”, 3 diverse interpretazioni di “IST”, etc. en.wikipedia.org/wiki/Time_zone_abbreviations
Non si può davvero utilizzare il tempo nel parco giochi per più di intervalli. L’esecuzione di questo locale vi mostra risultati diversi.
Go pacchetto analizza tz abbreviazioni come definito relativa alla posizione corrente, quindi Se siete in Posizione Europe/London, BST è “British Summer Time”, non “il Bangladesh Standard Time”

OriginaleL’autore faersons | 2014-08-18

One Reply
  1. 7

    Quando si Analizza una volta, si sta analizzando è nella posizione attuale, che è OK fintanto che è quello che vi aspettate, e l’abbreviazione del fuso orario è conosciuto all’interno della vostra posizione.

    Se è possibile ridurre i fusi orari, è molto più semplice di normalizzare tutte le volte che hai a che fare con in UTC.

    Il prossimo più semplice di gestire il tutto con esplicito offset, come -05:00.

    Se si vuole affrontare con i tempi originari di altri fusi orari, è necessario utilizzare time.Location. È possibile caricare i Luoghi del fuso orario locale db con time.LoadLocation, e analizzare le volte c’con time.ParseInLocation.

    Grazie! Ho letto la documentazione più attenzione la prossima volta. =)
    Prova: Ora := time.Now().UTC().Formato(“2006-01-02 15:04:05.000000”)

    OriginaleL’autore JimB

Lascia un commento