Unix时间戳转换成C#中的DateTime

先交代一下应用场景:我们的软件需要做一个简单的有效期验证保护。初始的想法是

在本地将安装时间、启动时间、当前时间做比较,为了防止记录被修改,记录在注册表的特殊的地方并加密。

我使用了.net自带的rsa加密方法;这样一来,带来了一些麻烦,首先我必须存储公钥,私钥用来加密和解密(解决这个问题时,我采用了相当蠢的办法,我把他们跟时间记录在一起);第二我还得处理因为公私钥可能被改变而引起的异常;当然还有360拦截写入注册表的异常。总之,麻烦一堆。

所幸,后端的同学提供了一个服务,查询当前的Unix时间戳。于是有了这个问题。

 1 //
 2 // Unix时间戳(timestamp)转换成当地时间的方法
 3 // timestamp转成double后,扩大10000000倍,转成long,得到ltime
 4 // ltime是从格林威治时间的计时起点(1970-01-01 00:00:00)到现在的时间间隔,转成TimeSpan,得到ts
 5 // 计算格林威治的计时起点转成当地时间的DateTime,得到glwzStart
 6 // 用glwzStart加上时间间隔ts,得到当前的当地时间
 7 //
 8 double dtime = double.TryParse(time, out dtime) ? dtime : 0;
 9 long ltime = (long)(dtime * 10000000);
10 TimeSpan ts = new TimeSpan(ltime);
11 DateTime glwzStart = TimeZone.CurrentTimeZone.ToLocalTime(DateTime.Parse("1970-1-1 00:00:00"));
12 DateTime cur = glwzStart.Add(ts);
13 if (cur >= DateTime.Parse(ExpirationDate))
14     return 1;
15 else
16     return 0;

 

转载于:https://www.cnblogs.com/warnet/p/4668803.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值