Hoe de juiste tijdstempel in C# te krijgen

Ik wil graag een geldig tijdstempel in mijn aanvraag krijgen, dus schreef ik:

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

uitvoer:

000101010000000000

Ik wilde zoiets als:

20140112180244

Wat heb ik verkeerd gedaan?


Antwoord 1, autoriteit 100%

Uw fout is het gebruik van new DateTime(), die 1 januari 0001 om 00:00:00.000 retourneert in plaats van de huidige datum en tijd. De juiste syntaxis om de huidige datum en tijd te krijgen is DateTime.Now, dus verander dit:

String timeStamp = GetTimestamp(new DateTime());

naar dit:

String timeStamp = GetTimestamp(DateTime.Now);

Antwoord 2, autoriteit 28%

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

Antwoord 3, autoriteit 13%

var timestamp = DateTime.Now.ToFileTime();
//output: 132260149842749745

Dit is een alternatieve manier om afzonderlijke transacties te individualiseren. Het is geen unix time, maar windows filetime.

Van de docs:

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).

Antwoord 4, autoriteit 3%

Voor UTC:

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

Voor lokaal systeem:

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

Antwoord 5, autoriteit 2%

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

“TIME” is het DateTime-object waarvoor u de Unix-tijdstempel wilt krijgen.


Antwoord 6

internal static string UnixToDate(int Timestamp, string ConvertFormat)
{
    DateTime ConvertedUnixTime = DateTimeOffset.FromUnixTimeSeconds(Timestamp).DateTime;
    return ConvertedUnixTime.ToString(ConvertFormat);
}
int Timestamp = (int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds;

Gebruik:

UnixToDate(1607013172, "HH:mm:ss"); // Output 16:32:52
Timestamp; // Output 1607013172

Other episodes