最近在做一個接口,需要用到時間戳,在請求接口時,返回超時,接口方的技術稱是時間戳的不對(超出一定范圍[比如1分鍾]就返回超時)導致的。
首先,看代碼:
public static double GetTimestamp(DateTime d)
{ TimeSpan ts = d - new DateTime(1970, 1, 1); return ts.TotalMilliseconds; }
初始貌似沒有問題,但是接口方的技術說真正得到的時間是多了8個多小時,經過一番推敲和網上找資料,原因是要計算的時間沒有轉換為標准時區的時間,是直接使用了北京時間,而接口根據時間戳計算時間是標准時區所對應的時間戳(Unix時間戳),所以驗證時間戳不對;
public static double GetTimestamp(DateTime d) { TimeSpan ts = d.ToUniversalTime() - new DateTime(1970, 1, 1); return ts.TotalMilliseconds; //精確到毫秒 }
ToUniversalTime()是轉換為UTC時間,然后計算出來的就是Unix時間戳,至此,問題解決。
