Como obter o timestamp correto em c #

146

Gostaria de obter um carimbo de data / hora válido no meu aplicativo, então escrevi:

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

resultado:

000101010000000000

Eu queria algo como:

20140112180244

O que eu fiz errado?

Wojciech Ketrzynski
fonte

Respostas:

192

Seu erro está em uso new DateTime(), que retorna 1 de janeiro de 0001 às 00: 00: 00.000 em vez da data e hora atuais. A sintaxe correta para obter a data e hora atuais é DateTime.Now , então altere isso:

String timeStamp = GetTimestamp(new DateTime());

para isso:

String timeStamp = GetTimestamp(DateTime.Now);
ekad
fonte
Qual é o contrário? de timestamp para datetime
DanielV 15/06
2
@ DanielV veja aqui: Convertendo uma String para DateTime .
ekad
2
double timestamp = 1498122000; DateTime fecha = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc).AddSeconds(timestamp); extraído de aqui
DanielV
44
var Timestamp = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
Mohamed.Abdo
fonte
11
Requer NET 4.6.
precisa saber é
7
Esta foi a resposta para mim, mas eu useiToUnixTimeMilliseconds()
Yass #:
16
var timestamp = DateTime.Now.ToFileTime();

//output: 132260149842749745

Essa é uma maneira alternativa de individuar transações distintas. Não é hora unix, mas o Windows Filetime.

Dos documentos :

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).
Jeff
fonte
2
Seria útil se você incluísse alguma explicação sobre por que sua resposta de código é melhor que as outras, para que outros usuários entendam por que usar sua solução para esse problema. As respostas somente de código não são tão úteis sem uma explicação.
Brian Tompsett -
3
Ajuda-me a obter facilmente um estilo de carimbo de data e hora para invalidar o cache. +1
Adavo
2
Int32 unixTimestamp = (Int32)(TIME.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

"TIME" é o objeto DateTime para o qual você deseja obter o registro de data e hora do unix.

sachin
fonte
1

Para UTC :

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

Para sistema local :

string unixTimestamp = Convert.ToString((int)DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
Yousha Aleayoub
fonte