1. 程式人生 > php教程 > [轉]PHP .net 時間戳轉換_PHP教程

[轉]PHP .net 時間戳轉換_PHP教程

原文: http://hi.baidu.com/wlj1013/item/e155970f105f7626a1312d58

c#中沒有象PHP一樣的time()時間戳函式,但有DateTime.Now.Ticks用來計算時間差。 

此屬性的值為自 0001 年 1 月 1 日午夜 12:00 以來所經過時間以 100 毫微秒為間隔表示時的數字。
dotnet下用DateTime.Now.Ticks能夠得到精確的時間,單位是10^-7s。

經過實驗,發現

[轉]PHP .net 時間戳轉換_PHP教程long a=(DateTime.Now.Ticks-aa.Ticks)/10000000-8*60*60;
[轉]PHP .net 時間戳轉換_PHP教程tbxUrl.Text=a.ToString();
[轉]PHP .net 時間戳轉換_PHP教程

要減去8*60*60才和time()函式得到的值一樣。
什麼問題?剛好是8個時區產生的差別。

[轉]PHP .net 時間戳轉換_PHP教程DateTime aa=new DateTime(1970,1,1);
[轉]PHP .net 時間戳轉換_PHP教程MessageBox.Show("1970  "+aa.Ticks.ToString()+"now"+DateTime.Now.Ticks.ToString());
[轉]PHP .net 時間戳轉換_PHP教程long a=(DateTime.Now.Ticks-aa.Ticks)/10000000-8*60*60;
[轉]PHP .net 時間戳轉換_PHP教程tbxUrl.Text=a.ToString();

同時發現c#裡面DataTime有一個屬性!DateTime.UtcNow已經考慮了時區問題。

ok~ 使用下面的程式碼即可

[轉]PHP .net 時間戳轉換_PHP教程DateTime timeStamp=new DateTime(1970,1,1);  //得到1970年的時間戳
[轉]PHP .net 時間戳轉換_PHP教程long a=(DateTime.UtcNow.Ticks-timeStamp.Ticks)/10000000;  //注意這裡有時區問題,用now就要減掉8個小時

 

 

相應的將PHP的時間轉換成.net 中的DateTime,

   static DateTimeConvertTime(long time)
        {
            DateTime timeStamp = new DateTime(1970, 1, 1); //得到1970年的時間戳
            long t = (time + 8 * 60 * 60) * 10000000 + timeStamp.Ticks;
            DateTime dt = new DateTime(t);
            return dt;
         }