Αναπαράσταση DateTime σε χιλιοστά του δευτερολέπτου;

Αναπαράσταση DateTime σε χιλιοστά του δευτερολέπτου;

Πιθανότατα προσπαθείτε να μετατρέψετε σε μια χρονική σήμανση παρόμοια με το UNIX, η οποία είναι σε UTC:

yourDateTime.ToUniversalTime().Subtract(
    new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)
    ).TotalMilliseconds

Αυτό αποφεύγει επίσης ζητήματα καλοκαιριού, καθώς η UTC δεν τα έχει.


Σε C#, μπορείτε να γράψετε

(long)(date - new DateTime(1970, 1, 1)).TotalMilliseconds

Από το .NET 4.6, μπορείτε να χρησιμοποιήσετε ένα DateTimeOffset αντικείμενο για να λάβετε τα unix χιλιοστά του δευτερολέπτου. Έχει έναν κατασκευαστή που παίρνει ένα DateTime αντικείμενο, ώστε να μπορείτε απλώς να περάσετε το αντικείμενο σας όπως φαίνεται παρακάτω.

DateTime yourDateTime;
long yourDateTimeMilliseconds = new DateTimeOffset(yourDateTime).ToUnixTimeMilliseconds();

Όπως σημειώνεται σε άλλες απαντήσεις, βεβαιωθείτε ότι yourDateTime έχει το σωστό Kind καθορισμένο ή χρησιμοποιήστε το .ToUniversalTime() για να το μετατρέψετε σε ώρα UTC πρώτα.

Εδώ μπορείτε να μάθετε περισσότερα για το DateTimeOffset .