2010-03-19 301 views
5

我正在使用pbx進行voip呼叫。 pbx的一個方面是您可以選擇接收CDR包。這些軟件包有兩個時間戳:「utc」和「local」,但兩者看起來總是相同的。將本地時間(10位數字)轉換爲可讀的日期時間格式

下面是一個時間戳示例:「1268927156」。

乍一看,似乎沒有邏輯。所以我嘗試了幾種轉換方式,但沒有很好的結果。該值應該在今天上午11點左右提供一個時間(+ 1GMT)。

的資料我嘗試:

  • 日期時間DT =新日期時間(數);
  • Timespan ts = new Timespan(number);
  • 日期時間UTC =新的日期時間(數+ 504911232000000000,DateTimeKind.Utc)

和其他一些我不記得現在。

我在這裏錯過了一些愚蠢的東西嗎?

在此先感謝

+0

請問這些類是否帶有ToString或Format方法? – lexu 2010-03-19 13:46:17

回答

12

這看起來像Unix時間。

1268927156 =星期四,2010年3月18日十五時45分56秒GMT

而一個代碼示例:

DateTime startDate = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); 
DateTime time = startDate.AddSeconds(1268927156); 
+0

問題修復,非常好的答案,謝謝 – Terry 2010-03-19 14:08:04

2

(從epoch沒有秒)似乎是Unix時間戳

DateTime translated = new DateTime(1970,1,1).AddSeconds(1268927156); 

應該給你的日期和時間,你以後......

1

我想這是一個UNIX時間戳,本振GIC將是以下:

Unix時間戳表示自Unix紀元(1970 00:00:00 GMT一月的第一)以秒爲單位測量的時間

有一個codeproject article說明轉換。基本上你需要做的是以下幾點:

// First make a System.DateTime equivalent to the UNIX Epoch. 
System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); 
// Add the number of seconds in UNIX timestamp to be converted. 
dateTime = dateTime.AddSeconds(timestamp); 
1

這看起來像一個unix時間戳,這是沒有。自1970年1月1日以來的秒數。

DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(1268927156); 

如果同時UTC與本地時間戳是相同的,在你的PBX將時區或者設置爲UTC,和你的時間戳真的是UTC,或時區設置爲UTC,但時間設爲您的當地時間,並且您可以獲得當地時間的兩個時間戳。你必須弄清楚哪些是你知道的,以便將時間戳從UTC轉換出來。

相關問題