2009-10-26 44 views
0

我有一個轉換蜱time_t的格式轉換time_t的蜱

long ticks = DateTime.Now.Ticks; 

     long tt = GetTimeTSecondsFrom(ticks); 

    long GetTimeTSecondsFrom(long ticks) 
    { 
     DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); 
     return (long) (new DateTime(ticks) - epoch).TotalSeconds; 
    } 

現在我很困惑,如何將它與一些數學公式,而不是與一個功能轉換回蜱的功能。

任何建議...?

謝謝

讓我來看一般情況並解釋。 DateTime.Now.Ticks給我一個值633921719670980000這是抽動

然後我轉換這time_t的上述功能,讓TT = 1256575167

現在我想這個轉換回633921719670980000.此我需要一個公式

回答

2

日期1970-01-01 00:00:00 Z正是62135596800秒(621,355,968,000,000,000蜱),所以要轉換DateTime剔計數爲time_t價值,你可能只是它的規模(由10,000,000分),以獲得秒鐘,然後減去偏移。

換個角度來說,做相反的事情:將偏移秒添加到time_t值,然後對其進行縮放(乘以10,000,000)以得到滴答聲。

+0

我明白這個邏輯非常合適..謝謝你..只是我想要的.. – user175084 2009-10-27 14:50:28

0

MSDN文檔:

單個刻度表示一個幾百納秒或第二的千萬分之一。毫秒中有10,000個刻度。

所以,一個功能轉換秒蜱看起來是這樣的:

long GetTicksFromSeconds(long seconds) 
{ 
    return seconds * 10000000; 
} 
+0

這不會給我我想要的值...請看看我編輯的部分以獲得清晰的圖片..謝謝 – user175084 2009-10-26 20:48:26

3

答案被賦予爲您original question關於轉換蜱註釋,以time_t的。

DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); 
return TimeSpan.FromSeconds(time_t_value).Ticks + epoch.Ticks; 
+0

它給出了一個錯誤'System.TimeSpan不包含'TotalTicks'的定義和沒有擴展方法'TotalTicks ........ – user175084 2009-10-26 22:03:32

+0

它是否缺少程序集引用。 – user175084 2009-10-26 22:04:13

+0

我剛從原始評論中複製並粘貼。它是.Ticks,而不是.TotalTicks,使用Intellisense很容易發現。我已經更新了答案。 – 2009-10-26 22:06:39