將時間轉換成timeStamp
- 2007-11-09
- 57981
- 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以後要引用的時候就簡單多了。
回應討論