Quel est l’équivalent C # DateTimeOffset dans Go

J’ai le code suivant qui prend une chaîne en entrée qui est convertie en horodatage UNIX. Je veux faire la même chose dans golang mais je ne suis pas capable de reconnaître la structure ou la fonction qui donnera un équivalent de la structure DateTimeOffset dans Go.

class Program { static void Main(ssortingng[] args) { var date = GetUtcTimestampFromAtsortingbute(); Console.WriteLine(date); if (date != null) { Console.WriteLine(ToUnixTimeStamp(date.Value)); } Console.ReadKey(); } public static DateTimeOffset? GetUtcTimestampFromAtsortingbute() { var ticks = long.Parse("7036640000000"); Console.WriteLine(ticks); return GetUtcTimestampFromTicks(ticks); } public static DateTimeOffset? GetUtcTimestampFromTicks(long ticks) { Console.WriteLine(new DateTimeOffset(ticks, TimeSpan.Zero)); return ticks != 0 ? new DateTimeOffset(ticks, TimeSpan.Zero) : (DateTimeOffset?)null; } public static long ToUnixTimeStamp(DateTimeOffset timeStamp) { var epoch = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero); return Convert.ToInt64((timeStamp - epoch).TotalSeconds); } } 

Par exemple:

Entrée: 635804753769100000

Sortie: 1444878577

Heure correspondante en UTC: 10/15/2015, 03:09:36 +00: 00

Quelqu’un peut-il m’aider s’il vous plaît sur une solution de contournement pour obtenir le résultat ci-dessus.

Merci

Par exemple,

 package main import ( "fmt" "time" ) func TimeFromTicks(ticks int64) time.Time { base := time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC).Unix() return time.Unix(ticks/10000000+base, ticks%10000000).UTC() } func main() { fmt.Println(TimeFromTicks(635804753769100000)) } 

Sortie:

 2015-10-15 03:09:36.0091 +0000 UTC 

Je pense que le paquet de time contient tout ce dont vous avez besoin et qu’il est, à l’OMI, la meilleure bibliothèque de temps avec laquelle j’ai travaillé dans toutes les langues. Exemple:

 package main import( "fmt" "time" ) func main(){ // this is how you parse a unix timestamp t := time.Unix(1444902545, 0) // get the UTC time fmt.Println("The time converted to UTC:", t.UTC()) // convert it to any zone: FixedZone can take a utc offset and zone name fmt.Println(t.In(time.FixedZone("IST", 7200))) } 

EDIT La conversion de l’object time en timestamp Unix est simple:

 t.Unix() 

ou

 t.UnixNano()