2013-04-10 32 views
10

Bu soru bir kopya değil, dönüşümün nasıl gerçekleştirileceği değil, dönüşüm yöntemiyle ilgili bir sorun olduğunu gösterir. Soruyu tam olarak okuyun. 1365151714493Döngü/unix'i Datetime olarak dönüştürün

http://www.epochconverter.com/

Etrafa bakıp bulduk:

Ben unix zaman damgası, aşağıdaki dönüştürücü kullanırken doğru

Değer damgası dönüştürür olduğuna inanıyoruz bir zaman damgası bir datetime nesnesine nasıl dönüştürüleceği ile ilgili bir example ve yöntem basit görünüyor, bir datetime nesnesi oluşturuyor ve tarihi 1/1/1970 tarihinde geceye ayarlıyor ve değeri ikinci olarak ekliyor:

public static DateTime? ConvertUnixTimeStamp(string unixTimeStamp) 
{ 
    return new DateTime(1970, 1, 1, 0, 0).AddSeconds(Convert.ToDouble(unixTimeStamp)); 
} 

Sorun şu ki, bu değere her seferinde değindiğim değerdir, ben istisna dışında bir değer elde ederim.

Önce değeri olan bir şey yapmam gerekiyor mu? dize bir çift ok dönüştürür. AddSeconds(double) metodlarını çağrılırken istisnası atılır

+0

Zaman damgasının milisaniye içinde olduğundan emin olun, _not_ saniye. DÜZENLEME: Bilmiyorsa ... bilirsin ... gelecekte 43,259'luk bir tarihi temsil etmesi gerekiyor. –

+0

Bu nasıl çiftleşir ???? Sağladığınız bağlantı, dönüşümü nasıl yapacağınızı soruyor. Dönüşüm yapmaya çalışırken bir sorun hakkında soru soruyorum! –

cevap

14

Bu zaman damgası (1365151714493), saniye değil milisaniye cinsindendir. 1000'a bölmeniz veya bunun yerine AddMilliseconds'u kullanmanız gerekir. Saniyeler olarak kabul edilirse, gelecekte 43,259 (kaba hesaplama) bir tarihtir. Bu, 10000 yılında maxes out olan DateTime aralığının ötesindedir, böylece ArgumentOutOfRangeException.

public static DateTime? ConvertUnixTimeStamp(string unixTimeStamp) 
{ 
    return new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(Convert.ToDouble(unixTimeStamp)); 
} 

Ayrıca, V4Vendetta'nın önerdiği gibi GMT'ye zorlamayı düşünebilirsiniz. Buna ek olarak, eğer formatların bir karışımını (saniyeler veya OR milisaniye) almayı beklerseniz, ayrıştırılan değer üzerinde hızlı bir boyut kontrolü sağduyulu olabilir.

+0

Değerin milisaniye olabilme olasılığını tamamen gözden kaçırdım, çünkü okuduğum her makalede saniyeler içinde bulunan zaman damgasının örnekleri verilmişti bana verilen değer aynıydı. Teşekkürler –

5

Ben GMT

göre bunu bir değer değil geleneksel unix timestamp as in seconds milisaniyede olup varsayar söz sitesinden Ayrıca

olduğundan olarak bunu denemek gerek

DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); 
epoch = epoch.AddMilliseconds(yourvalue);// your case results to 4/5/2013 8:48:34 AM 
İlgili konular