Comment obtenir un horodatage correct en C #


146

Je voudrais obtenir un horodatage valide dans mon application, alors j'ai écrit:

public static String GetTimestamp(DateTime value)
{
    return value.ToString("yyyyMMddHHmmssffff");
}
//  ...later on in the code
String timeStamp = GetTimestamp(new DateTime());
Console.WriteLine(timeStamp);

production:

000101010000000000

Je voulais quelque chose comme:

20140112180244

Qu'est ce que j'ai mal fait?

Réponses:


192

Votre erreur utilise new DateTime(), qui renvoie le 1er janvier 0001 à 00: 00: 00.000 au lieu de la date et de l'heure actuelles. La syntaxe correcte pour obtenir la date et l'heure actuelles est DateTime.Maintenant , modifiez ceci:

String timeStamp = GetTimestamp(new DateTime());

pour ça:

String timeStamp = GetTimestamp(DateTime.Now);

Quel est le contraire? from timestamp to datetime
DanielV

2

2
double timestamp = 1498122000; DateTime fecha = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc).AddSeconds(timestamp); extrait d' ici
DanielV

44
var Timestamp = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();

11
Nécessite NET 4.6.
jeromej

7
C'était la réponse pour moi, mais j'ai utiliséToUnixTimeMilliseconds()
Yass

16
var timestamp = DateTime.Now.ToFileTime();

//output: 132260149842749745

Il s'agit d'une autre manière d'individualiser des transactions distinctes. Ce n'est pas l'heure UNIX, mais Windows filetime.

À partir de la documentation :

A Windows file time is a 64-bit value that represents the number of 100- 
nanosecond intervals that have elapsed since 12:00 midnight, January 1, 1601 
A.D. (C.E.) Coordinated Universal Time (UTC).

2
Il serait utile que vous ajoutiez une explication sur la raison pour laquelle votre réponse de code est meilleure que les autres afin que les autres utilisateurs comprennent pourquoi vous utilisez la solution à ce problème. Les réponses au code uniquement ne sont pas si utiles sans une explication.
Brian Tompsett - 汤 莱恩

3
M'aide à obtenir facilement un style d'horodatage pour invalider le cache. +1
Adavo

2
Int32 unixTimestamp = (Int32)(TIME.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

"TIME" est l'objet DateTime pour lequel vous souhaitez obtenir l'horodatage unix.


1

Pour UTC :

string unixTimestamp = Convert.ToString((int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);

Pour le système local :

string unixTimestamp = Convert.ToString((int)DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.