Как получить правильную метку времени в 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);
ekad
источник
Что наоборот? от отметки времени до даты
DanielV
2
@DanielV смотрите здесь: Преобразование строки в DateTime .
ekad
2
double timestamp = 1498122000; DateTime fecha = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc).AddSeconds(timestamp); извлечено отсюда
DanielV
45
var Timestamp = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
Mohamed.Abdo
источник
11
Требуется NET 4.6.
Джеромей
7
Это был ответ для меня, но я использовалToUnixTimeMilliseconds()
Ясс
16
var timestamp = DateTime.Now.ToFileTime();

//output: 132260149842749745

Это альтернативный способ индивидуализации отдельных транзакций. Это не время Unix, а время файлов Windows.

Из документов :

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
Adavo
2
Int32 unixTimestamp = (Int32)(TIME.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

«ВРЕМЯ» - это объект 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);
Юша Алеауб
источник