C # 'da doğru zaman damgası nasıl alınır


147

Uygulamamda geçerli bir zaman damgası almak istiyorum, bu yüzden yazdım:

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

çıktı:

000101010000000000

Gibi bir şey istedim:

20140112180244

Neyi yanlış yaptım?

Yanıtlar:


193

Sizin hata kullanıyor new DateTime()1 Ocak döndürür, 0001 00: 00 ': yerine geçerli tarih ve saati 00.000. Geçerli tarih ve saati almak için doğru sözdizimi DateTime.Now olduğundan , şunu değiştirin:

String timeStamp = GetTimestamp(new DateTime());

buna:

String timeStamp = GetTimestamp(DateTime.Now);

Bunun tersi ne? zaman damgasından datetime'ye
DanielV

2
@DanielV buraya bakın: Bir String'i DateTime'a dönüştürme .
ekad

2
double timestamp = 1498122000; DateTime fecha = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc).AddSeconds(timestamp);buradan
DanielV

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

11
NET 4.6 gerektirir.
jeromej

7
Bu benim için bir cevaptı, ama kullandımToUnixTimeMilliseconds()
Yass

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

//output: 132260149842749745

Bu, farklı işlemleri bireyselleştirmenin alternatif bir yoludur. Unix zamanı değil, windows filetime.

Gönderen 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).

2
Kod yanıtınızın neden diğerlerinden daha iyi olduğuna ilişkin bazı açıklamalar eklediyseniz, diğer kullanıcıların sizi bu soruna neden çözüm kullanacağını anlamaları yardımcı olacaktır. Sadece kod cevapları açıklama yapmadan çok yardımcı olmaz.
Brian Tompsett - 莱恩 莱恩

3
Önbelleği geçersiz kılmak için kolayca bir zaman damgası stili almama yardımcı olur. +1
Adavo

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

"TIME", unix zaman damgasını almak istediğiniz DateTime nesnesidir.


1

İçin UTC :

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

Yerel sistem için :

string unixTimestamp = Convert.ToString((int)DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.