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.