2016-08-27 2 views
2

Ich versuche, Datum/Zeit-String in der Unix-Zeitstempel-String zu konvertieren:PHP Entspricht strtotime() in GO

<?php 
    echo strtotime("20140921040000"); 
?> 
Output: 1411286400 //timestamp 

Doing gleichen in GO lang, aber nicht gewünschtes Ergebnis zu bekommen. Go-Code ist unter:

package main 

import (
    "fmt" 
    "time" 
) 

func main() { 
    tm := time.Unix(1411286400, 0) 
    fmt.Println(tm) //output: 2014-09-21 08:00:00 +0000 UTC 

    //================ 
    layout := "20060102150405" 
    str := "20140921040000" 
    t, err := time.Parse(layout, str) 
    if err != nil { 
     fmt.Println(err) 
    } 
    fmt.Println(t) // output: 2014-09-21 04:00:00 +0000 UTC 
} 

Antwort

3

In Ihrem letzten Zeile tun:

fmt.Println(t.Unix()) 

Sie können es mit diesem PHP-Code vergleichen: http://sandbox.onlinephpfunctions.com/code/b520953ea26e2d84ed85db6f5657ceeccade08d4

+0

Aber, es als PHP strtotime nicht gleich ist() . Beide Ausgänge sind unterschiedlich. Und die Ausgabe der PHP-Funktion ist korrekt. – Daisy

+1

Eigentlich ist Ihr PHP falsch, da es wahrscheinlich das Servergebietsschema verwendet. Siehe oben PHP Code Beispiel. –

+0

@Daisy In der Tat, aus [der Dokumentation] (http://php.net/strtotime): 'Jeder Parameter dieser Funktion verwendet die Standardzeitzone, sofern in diesem Parameter keine Zeitzone angegeben ist. Achten Sie darauf, in jedem Parameter keine anderen Zeitzonen zu verwenden, es sei denn, dies ist beabsichtigt. – Carpetsmoker