Come ottenere il timestamp corretto in C #


146

Vorrei ottenere un timestamp valido nella mia domanda, quindi ho scritto:

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

produzione:

000101010000000000

Volevo qualcosa del tipo:

20140112180244

Cosa ho fatto di sbagliato?

Risposte:


192

Si sta utilizzando l'errore new DateTime(), che restituisce il 1 gennaio 0001 alle 00:00: 00.000 anziché la data e l'ora correnti. La sintassi corretta per ottenere la data e l'ora correnti è DateTime.Now , quindi cambia questo:

String timeStamp = GetTimestamp(new DateTime());

a questa:

String timeStamp = GetTimestamp(DateTime.Now);

Qual è il contrario? dal timestamp al datetime
DanielV,


2
double timestamp = 1498122000; DateTime fecha = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc).AddSeconds(timestamp); estratto da qui
Daniel V

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

11
Richiede NET 4.6.
Jeromej,

7
Questa è stata la risposta per me, ma ho usatoToUnixTimeMilliseconds()
Yass l'

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

//output: 132260149842749745

Questo è un modo alternativo per individuare transazioni distinte. Non è unix time, ma windows filetime.

Dai documenti :

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
Sarebbe d'aiuto se aggiungessi qualche spiegazione sul perché la tua risposta al codice è migliore delle altre, così che altri utenti capiranno perché usare la tua soluzione a questo problema. Solo le risposte al codice non sono così utili senza una spiegazione.
Brian Tompsett - 莱恩 莱恩

3
Mi aiuta a ottenere facilmente uno stile timestamp per invalidare la cache. +1
Adavo,

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

"TIME" è l'oggetto DateTime per il quale desideri ottenere il timestamp unix.


1

Per UTC :

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

Per il sistema locale :

string unixTimestamp = Convert.ToString((int)DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.