C#时间戳使用说明

C#时间戳使用说明


2024年4月29日发(作者:)

时间戳或称Unix时间戳(UnixTimeStamp)

是从

1970

1

1

日开始计算的,即计算时间到

1970

1

1

0

时(北京时间

8

时)的总秒数。

在此补充一个小知识:为什么计算机时间和众多编程语言要从

1970

1

1

日开始算

起?在此有

2

种解释,最懒的解释是很多编程语言起源于

UNIX

系统,而

UNIX

系统认为

1970

1

1

0

点是时间纪元,所以为我们常说的

UNIX

时间戳是以

1970

1

1

0

点为

计时起点时间的;深入的解释是最初计算机操作系统是

32

位,而时间也是用

32

位表示。

Integer

JAVA

内用

32

位表示,因此

32

位能表示的最大值是

2147483647

。另外

1

365

天的总秒数是

31536000

2147483647/31536000=68.1

,也就是说

32

位能表示的最长时间

68

年,从

1970

年开始的话,加上

68.1

,实际最终到

2038

01

19

03

14

07

秒,便会到达最大时间,过了这个时间点,所有

32

位操作系统时间便会变为

10000000

,算下来也就是

1901

12

13

20

45

52

秒,这样便

会出现时间回归的现象,很多软件便会运行异常了。

到这里,我想问题的答案已经显现出来了,那就是

:

因为用

32

位来表示时间的最大间隔

68

年,而最早出现的

UNIX

操作系统考虑到计算机产生的年代和应用的时限综合取了

1970

1

1

日作为

UNIXTIME

的纪元时间

(

开始时间

)

,至于时间回归的现象相信随着

64

为操作系统的产生逐渐得到解决,因为用

64

位操作系统可以表示到

292,277,026,596

12

4

15

30

08

秒,相信我们的

N

代子孙,哪怕地球毁灭那天都不用愁不够用了,因

为这个时间已经是千亿年以后了。

c#时间戳

c#

的时间戳却是

13

位的,那么我们处理的时候的代码如下:

将时间转换为时间戳:

//将时间转换为时间戳

privatelongConvertDateTimeToTimeStamp(DateTimetargetTime)

{

DateTimestartTime=lTime(newDateTime(1970,1,1));

longtsa=()/10000;

returntsa;

}

将时间戳转换为时间:

//将时间戳转换为时间

privateDateTimeConvertTimeStampToDateTime(stringtimeStamp)

{

DateTimestartTime=lTime(newDateTime(1970,1,1));

longlTime=(timeStamp+"0000");

TimeSpantoNow=newTimeSpan(lTime);

DateTimetargetTime=(toNow);

returntargetTime;

}


发布者:admin,转转请注明出处:http://www.yc00.com/web/1714327092a2425447.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信