六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 157|回复: 0

[转]PHP .net 时间戳转换

[复制链接]

升级  64%

8

主题

8

主题

8

主题

童生

Rank: 1

积分
32
 楼主| 发表于 2013-1-1 21:59:42 | 显示全部楼层 |阅读模式
[转]PHP .net 时间戳转换

<div id="cnblogs_post_body"><div id="content" class="content text-content clearfix">原文: 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。
经过实验,发现
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个小时


相应的将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;
         }
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表