Як отримати правильну часову позначку в C #


146

Я хотів би отримати дійсну позначку часу у своїй заявці, тому я написав:

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

вихід:

000101010000000000

Я хотів чогось типу:

20140112180244

Що я зробив неправильно?

Відповіді:


192

Ваша помилка в використанні new DateTime(), яке повертається 1 січня 0001 о 00: 00: 00.000 замість поточної дати та часу. Правильний синтаксис для отримання поточної дати та часу - DateTime.Now , тож змініть це:

String timeStamp = GetTimestamp(new DateTime());

до цього:

String timeStamp = GetTimestamp(DateTime.Now);

Що навпаки? від мітки часу до дати
DanielV


2
double timestamp = 1498122000; DateTime fecha = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc).AddSeconds(timestamp); витягнуто звідси
DanielV


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

//output: 132260149842749745

Це альтернативний спосіб індивідуалізації окремих угод. Це не час Unix, а вікна файлів.

З документів :

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
Допоможе, якщо ви додасте пояснення, чому відповідь на ваш код краще, ніж інші, щоб інші користувачі зрозуміли, чому саме вам вирішити цю проблему. Відповіді лише на код не так корисні без пояснень.
Брайан Томпсетт - 汤 莱恩

3
Допомагає мені легко отримати стиль часової позначки для недійсного кешу. +1
Адаво

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

"TIME" - це об'єкт DateTime, для якого ви хочете отримати часову позначку unix.


1

За UTC :

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

Для локальної системи :

string unixTimestamp = Convert.ToString((int)DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.