1.总结日期类型在编程语言中内部存储的是数字。加减法其实就是数字的加减法。大多数编程语言的date开始时间是1970-01-0100:00:002.为什么大多数编程语言的开始日期是1970-01-0100:00:00一般有两种解释通过查阅资料。大多数编程语言起源于UNIX,UNIX系统的时间纪元是1970-01-0100:00:00,也就是UNIX时间戳。最初,电脑都是32位的操作系统,时间需要用数字来存储。32位最大能表示的数是2147483647,一年365天的总秒数是31536000,两者相除得到68.1。所以如果从0000-00-0000:00:00算起,到1901年12月13日计算机会溢出。而选择1970,可以支持到2038年。对于这两种解释,我个人比较认同UNIX时间时代。毕竟UNIX是这一年出现的。作为UNIX开发人员,我们需要纪念这个重要的日子。三、UNIX时代采用的开发语言1、JAVA文档地址:http://docs.oracle.com/javase/8/docs/api/java/util/Date.html#Date但是对于中国开发者来说,通过System.Out.Println(新日期(0));,控制台打印的时间是1970-01-0108:00:00,这是因为中国在东8区。它对程序的内部存储值没有影响。2、JavaScript文档地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date3、Python文档地址:https://docs.python.org/3/library/datetime.html#date-objects4.ORACLE文件地址:http://docs.oracle.com/cd/E11882_01/appdev.112/e13995/oracle/sql/TIMESTAMP.html5.PHP文件地址:http:///php.net/manual/en/function.time.php四、不使用UNIX时间戳的语言1、基于.Net类库的语言默认使用int64位表示时间戳,精度为100ns,起始日期点为0001-01-0100:00:00.000。文档地址:https://msdn.microsoft.com/zh-cn/library/z2xf7zzk(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-12.VBScript文档地址:https://www.microsoft.com/china/vbscript/vbstutor/vbsdatatype.htm这个开始时间很奇怪。从API来看,开始时间是从0100-01-0100:00:00但是从代码测试,开始时间是从1899-12-300:00:00开始5.关于EXCEL日期系统,officeexcel中有1900和1904两种日期格式,即日期的起点是1900-01-0100:00:00和1904-01-0100:00:00。一般Excel默认以1900为基准的日期系统,将1900年视为农历年,1900年2月按29天计算。Excel中存值的起始日期是从1开始的,即1900-01-0100:00:00对应Excel中的1(天)。
