So erhalten Sie den richtigen Zeitstempel in C #

146

Ich möchte einen gültigen Zeitstempel in meiner Bewerbung erhalten, also schrieb ich:

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

Ausgabe:

000101010000000000

Ich wollte so etwas wie:

20140112180244

Was habe ich falsch gemacht?

Wojciech Ketrzynski
quelle

Antworten:

192

Ihr Fehler ist die Verwendung von new DateTime(), die den 1. Januar 0001 um 00: 00: 00.000 anstelle des aktuellen Datums und der aktuellen Uhrzeit zurückgibt. Die korrekte Syntax zum Abrufen des aktuellen Datums und der aktuellen Uhrzeit lautet DateTime.Now . Ändern Sie Folgendes :

String timeStamp = GetTimestamp(new DateTime());

dazu:

String timeStamp = GetTimestamp(DateTime.Now);
ekad
quelle
Was ist umgekehrt? vom Zeitstempel bis zum Datum
Uhrzeit
2
@DanielV siehe hier: Konvertieren eines Strings in DateTime .
Ekad
2
double timestamp = 1498122000; DateTime fecha = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc).AddSeconds(timestamp); extrahiert von hier
DanielV
44
var Timestamp = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
Mohamed.Abdo
quelle
11
Benötigt NET 4.6.
Jeromej
7
Dies war die Antwort für mich, aber ich benutzteToUnixTimeMilliseconds()
Yass
15
var timestamp = DateTime.Now.ToFileTime();

//output: 132260149842749745

Dies ist eine alternative Möglichkeit, unterschiedliche Transaktionen zu individualisieren. Es ist keine Unix-Zeit, sondern Windows-Filetime.

Aus den Dokumenten :

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
quelle
2
Es wäre hilfreich, wenn Sie eine Erklärung hinzufügen würden, warum Ihre Code-Antwort besser ist als die anderen, damit andere Benutzer verstehen, warum Sie eine Lösung für dieses Problem verwenden sollten. Nur-Code-Antworten sind ohne Erklärung nicht so hilfreich.
Brian Tompsett - 莱恩 莱恩
3
Hilft mir, einfach einen Zeitstempelstil zu erhalten, um den Cache ungültig zu machen. +1
Adavo
2
Int32 unixTimestamp = (Int32)(TIME.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

"TIME" ist das DateTime-Objekt, für das Sie den Unix-Zeitstempel erhalten möchten.

Sachin
quelle
0

Für UTC :

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

Für lokales System :

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