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