demoshop

demo, trying to be the best_

將時間轉換成timeStamp

  • 2007-11-09
  • 57943
  • 0

C#中的DateTime型態可以顯示的範圍在西元0001年1月1日晚上12:00:00到西元9999年12月31日晚上11:59:59之間,而Unix的時間戳記則是顯示格林威治時間(GTM)1970年1月1日00:00:00到目前經過的秒數。C#沒有預設的函式來處理兩者之間的轉換,所以我們自己動手來作一個吧

◆把現在時間轉成timeStamp

DateTime gtm = new DateTime(1970, 1, 1);//宣告一個GTM時間出來
DateTime utc = DateTime.UtcNow.AddHours(8);//宣告一個目前的時間
int timeStamp = Convert.ToInt32(((TimeSpan)utc.Subtract(gtm)).TotalSeconds);
//我們把現在時間減掉GTM時間得到的秒數就是timpStamp,因為我不要小數點後面的所以我把它轉成int 

    ▲當然你也可以簡寫

 int timeStamp = Convert.ToInt32(DateTime.UtcNow.AddHours(8).Subtract(new DateTime(1970, 1, 1)).TotalSeconds); 

♥小提醒:上面轉timeStamp的方法是因為我要拿來做檔名,所以不能有小數點,如果你要完整的timeStamp就這樣寫吧

 double timeStamp = DateTime.UtcNow.AddHours(8).Subtract(new DateTime(1970, 1, 1)).TotalSeconds; 


◆把timeStamp轉回GMT時間

 DateTime gtm = (new DateTime(1970, 1, 1)).AddSeconds(Convert.ToInt32(timeStamp)); 



?小鋪廢言:如簡介說的,因為timeStamp是時間的秒數,所以是唯一的,因為他是唯一的所以相當的好用,比如說上傳檔案的檔名或資料夾等等一些需要多個pk值的應用,建議您把它寫成Class以後要引用的時候就簡單多了。

回應討論