Как получить правильную метку времени в 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
@DanielV смотрите здесь: Преобразование строки в DateTime .
ekad

2
double timestamp = 1498122000; DateTime fecha = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc).AddSeconds(timestamp); извлечено отсюда
DanielV


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);
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.