来自:http://www.cnblogs.com/locoy/archive/2006/08/10/473105.html
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();
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();
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~ 使用下面的代码即可
long a = (DateTime.UtcNow.Ticks - timeStamp.Ticks) / 10000000 ; // 注意这里有时区问题,用now就要减掉8个小时