为什么编程语言中日期能够实现加减法

开发 开发工具
这两种解释,我个人比较认可UNIX时间纪元的说法,毕竟UNIX出现在这一年,作为UNIX的研发者需要纪念这个重要的日子。

一.概要

  • 日期类型在编程语言中内部是通过number 存储的

  • 日期类型加减实际是数字的加减

  • 多数编程语言的日期开始时间是 1970-01-01 00:00:00

二. 为什么多数编程语言的开始日期是从1970-01-01 00:00:00 开始

 通过查阅资料一般存在两种解释

  •  多数编程语言起源于UNIXUNIX系统的时间纪元是1970-01-01 00:00:00,即所为的UNIX时间戳。

  • 最初计算机都是32位操作系统,时间需要通过number存储,32位能表示***数字为2147483647。一年365天的总秒数位  31536000 ,两者相除得68.1.所以如果从0000-00-00 00:00:00 算起的话,计算机到19011213日就溢出了。而选用1970年的,可以支持到2038年。

    这两种解释,我个人比较认可UNIX时间纪元的说法,毕竟UNIX出现在这一年,作为UNIX的研发者需要纪念这个重要的日子。

三.采用的UNIX时间纪元的开发语言

 1.JAVA 

 文档地址:http://docs.oracle.com/javase/8/docs/api/java/util/Date.html#Date

     

   不过对于中国开发者,通过 System.Out.Println(new Date(0)); ,控制台打印的时间是1970-01-01 08:00:00 ,这个是因为中国处于东8区的缘由。对于程序内部存储值无影响。

 2.JavaScript

  文档地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date

    

3.Python

文档地址: https://docs.python.org/3/library/datetime.html#date-objects

    

4.ORACLE

文档地址:http://docs.oracle.com/cd/E11882_01/appdev.112/e13995/oracle/sql/TIMESTAMP.html

    

 

 5.PHP

  文档地址:http://php.net/manual/en/function.time.php

     

四 .没采用UNIX时间戳的语言

  1.基于 .Net 类库的语言

   默认采用int64位来表示时间戳,并且精确到100ns,开始日期点为0001-01-01 00:00:00.000。

  文档地址:https://msdn.microsoft.com/zh-cn/library/z2xf7zzk(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

    

2.VBScript 

 文档地址:https://www.microsoft.com/china/vbscript/vbstutor/vbsdatatype.htm

 这个开始时间很奇怪,从API来看,开始时间是从0100-01-01 00:00:00 

[[179972]]

不过从代码测试来看,开始时间是从1899-12-30 0 :00:00 开始

[[179973]]

五.有关EXCEL 日期系统

  在office excel中存在两种日期格式1900 和 1904,即日期的开始点为 1900-01-01 00:00:00 和 1904-01-01 00:00:00 。一般Excel 默认是按照1900的日期系统,且认为1900年为润年,1900年2月分 按照29天计算。Excel中存储值得起始日期是从1开始的,即,1900-01-01 00:00:00 在excel中对应的存储值为1 (天)。

责任编辑:张燕妮 来源: 博客园
相关推荐

2011-11-16 15:54:38

2009-06-24 15:44:59

JSF的加减法Seam

2010-07-06 09:45:10

OracleJavaJames Gosli

2011-08-26 14:27:57

打印机技巧

2015-12-25 10:44:02

Java操作

2009-06-18 12:37:26

java编程语言

2022-08-26 09:51:49

索引签名编程语言

2023-09-07 10:50:22

2011-11-21 16:38:33

安全技术周刊

2023-01-31 15:15:14

ChatGPTAI

2015-04-08 10:46:11

2014-07-02 09:56:33

2009-07-27 13:46:48

ASP.NET编程日期与时间的处理

2014-05-07 09:48:39

CC语言

2018-05-30 14:49:51

编程语言API语法

2022-02-15 15:20:26

计算神经元研究

2013-08-01 09:15:42

Xen Hypervi 虚拟化

2021-04-06 15:20:05

编程语言JavaIT

2014-12-23 09:34:47

动态语言

2020-09-18 15:22:31

编程语言C语言Java
点赞
收藏

51CTO技术栈公众号