標籤:
原文:在C#中擷取如PHP函數time()一樣的時間戳記
c#中沒有象PHP一樣的time()時間戳記函數,但有DateTime.Now.Ticks用來計算時間差。
此屬性的值為自 0001 年 1 月 1 日午夜 12:00 以來所經過時間以 100 毫微秒為間隔表示時的數字。
dotnet下用DateTime.Now.Ticks能夠得到精確的時間,單位是10^-7s。
經過實驗,發現
long a=(DateTime.Now.Ticks-aa.Ticks)/10000000-8*60*60;tbxUrl.Text=a.ToString();
要減去8*60*60才和time()函數得到的值一樣。
什麼問題?剛好是8個時區產生的差別。
DateTime aa=new DateTime(1970,1,1);MessageBox.Show("1970 "+aa.Ticks.ToString()+"now"+DateTime.Now.Ticks.ToString());long a=(DateTime.Now.Ticks-aa.Ticks)/10000000-8*60*60;tbxUrl.Text=a.ToString();
同時發現c#裡面DataTime有一個屬性!DateTime.UtcNow已經考慮了時區問題。
ok~ 使用下面的代碼即可
DateTime timeStamp=new DateTime(1970,1,1); //得到1970年的時間戳記long a=(DateTime.UtcNow.Ticks-timeStamp.Ticks)/10000000; //注意這裡有時區問題,用now就要減掉8個小時
UNIX時間戳記 與 時間格式互相轉換
/// <summary>/// 將Unix時間戳記格式轉換為c# DateTime時間格式/// </summary>/// <param name="timeStamp">時間戳記</param>/// <returns>DateTime </returns>public DateTime GetTime(string timeStamp){ DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = long.Parse(timeStamp + "0000000"); TimeSpan toNow = new TimeSpan(lTime); return dtStart.Add(toNow);}
/// <summary>/// 將c# DateTime時間格式轉換為Unix時間戳記格式/// </summary>/// <param name="time">時間</param>/// <returns>double</returns>public int ConvertDateTimeInt(System.DateTime time){ int intResult = 0; System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); intResult = (int)(time - startTime).TotalSeconds; return intResult;}
在C#中擷取如PHP函數time()一樣的時間戳記