-1
votes

Comment convertir une chaîne formatée comme 2018-12-27T02: 23: 29 à UNIX Timeestamp en C #

Je suppose que je devrais simplement analyser la chaîne dans une date d'heure et partir de là ... mais y a-t-il une meilleure façon de faire cela?


2 commentaires

Qu'est-ce qui constituerait une "meilleure façon?" Pourquoi feriez-vous cela d'une autre manière? Y a-t-il quelque chose de spécifique que vous essayez d'accomplir ou de déterminer?


Dupliqué possible de Comment obtenir l'horodatage UNIX en C #


3 Réponses :


2
votes

Vous devez l'analyser à un objet normal DateTime code> à l'aide de quelque chose à partir de la DateTime.parse / parseexact code> famille de fonctions, puis appelez une méthode comme celle-ci:

public int ToUnixTime(DateTime d)
{
    var epoch = new DateTime(1970,1,1);
    return (int)(d - epoch).TotalSeconds;
}


0 commentaires

0
votes

DateTime stocke interlumentalement les "ticks" (a inventé Unité de temps ) depuis "12:00:00 minuit, 1er janvier 0001 (0:00:00 UTC le 1er janvier 0001), dans le calendrier grégorien". Comme un nombre INT64 / long. DateTime bat donc unix Time facilement dans les valeurs possibles. La conversion à DateTime devrait être sans perte.

Tous les appels de ToString (), tout autre appel de propriétés calculera simplement les valeurs basées sur ces tiques (et paramètres de culture / fuseau horaire pour Tostring ()). Tout le reste est juste une interprétation de la valeur de la tick.

Vous devriez analyser à DateTime. Et obtenir des tiques à quelque chose comme incarcise que l'Unixtime est facile. Voir Joels Répondre pour cela.

Notez cependant que la précision des DateTimes et l'accuisation ne correspondent pas complètement: https://blogs.msdn.microsoft.com/ericlippert/2010/04/08/precision-et-accuracy-of-DateTime/ DateTime.now vous donnera habituellement Seules les valeurs de retour dans des étapes de 18 ms. Et même le chronomètre a des problèmes avec des valeurs <1 ms.


0 commentaires

3
votes

Vous pouvez utiliser le datetimeoffset code> struct, qui a un TounixTimeseconds code> (ou TounixTimemilliseconds code>) Vous pouvez utiliser:

long unixTimestamp = DateTimeOffset.Parse("2018-12-27T02:23:29").ToUnixTimeSeconds();


1 commentaires

Oui ... c'est ce que je cherchais!