为什么微软的时间从1900.1.1算起,而unix时间戳是从1970.1.1算起
发布网友
发布时间:2022-05-04 15:26
我来回答
共3个回答
热心网友
时间:2023-10-23 07:56
因为Unix就是那个时代产生的。
Unix是1969年发布的雏形,最早是基于硬件60Hz的时间计数。
1971年底出版的《Unix Programmer's Manual》里定义的Unix Time是以1971年1月1日00:00:00作为起始时间,每秒增长60。
之后考虑到32位整数的范围,如果每秒60个数字,则两年半就会循环一轮了。于是改成了以秒为计数单位。
这个循环周期有136年之长,就不在乎起始时间是1970还是1971年了,于是就改成了人工记忆、计算比较方便的1970年了。追问unix时间戳这个我懂,就不懂为啥微软还搞个Ox00????的时间,意义何在,这样数据库转换难度增大,而且自家的excel算法又跟一般的程序算法不一样,好像excel月份是按30天算?正常程序都是按每个月的具体天数算(比如2月28天,闰二月29天,一三五七八十腊31天,其它30天),我也是最近读取数据库才发现微软还有这种16进制时间的存在,所以感到很迷
热心网友
时间:2023-10-23 07:57
1、最懒的解释
很多编程语言起源于UNIX系统,而UNIX系统认为1970年1月1日0点是时间纪元,所以为偶们常说的UNIX时间戳是以1970年1月1日0点为计时起点时间的。
2、深入的了解
最初计算机操作系统是32位,而时间也是32为表示。
System.out.println(Integer.MAX_VALUE);追问我现在不懂的是为啥微软16进制时间是从1900年1月1日00:00:00.000算起,时间戳我知道,就是被微软这样搞有点混乱
热心网友
时间:2023-10-23 07:57
别问了 这东西 没有啥答案 我查很很多 答案千篇一律 但无法解释
热心网友
时间:2023-10-23 07:56
因为Unix就是那个时代产生的。
Unix是1969年发布的雏形,最早是基于硬件60Hz的时间计数。
1971年底出版的《Unix Programmer's Manual》里定义的Unix Time是以1971年1月1日00:00:00作为起始时间,每秒增长60。
之后考虑到32位整数的范围,如果每秒60个数字,则两年半就会循环一轮了。于是改成了以秒为计数单位。
这个循环周期有136年之长,就不在乎起始时间是1970还是1971年了,于是就改成了人工记忆、计算比较方便的1970年了。追问unix时间戳这个我懂,就不懂为啥微软还搞个Ox00????的时间,意义何在,这样数据库转换难度增大,而且自家的excel算法又跟一般的程序算法不一样,好像excel月份是按30天算?正常程序都是按每个月的具体天数算(比如2月28天,闰二月29天,一三五七八十腊31天,其它30天),我也是最近读取数据库才发现微软还有这种16进制时间的存在,所以感到很迷
热心网友
时间:2023-10-23 07:57
1、最懒的解释
很多编程语言起源于UNIX系统,而UNIX系统认为1970年1月1日0点是时间纪元,所以为偶们常说的UNIX时间戳是以1970年1月1日0点为计时起点时间的。
2、深入的了解
最初计算机操作系统是32位,而时间也是32为表示。
System.out.println(Integer.MAX_VALUE);追问我现在不懂的是为啥微软16进制时间是从1900年1月1日00:00:00.000算起,时间戳我知道,就是被微软这样搞有点混乱
热心网友
时间:2023-10-23 07:57
别问了 这东西 没有啥答案 我查很很多 答案千篇一律 但无法解释
热心网友
时间:2023-10-23 07:56
因为Unix就是那个时代产生的。
Unix是1969年发布的雏形,最早是基于硬件60Hz的时间计数。
1971年底出版的《Unix Programmer's Manual》里定义的Unix Time是以1971年1月1日00:00:00作为起始时间,每秒增长60。
之后考虑到32位整数的范围,如果每秒60个数字,则两年半就会循环一轮了。于是改成了以秒为计数单位。
这个循环周期有136年之长,就不在乎起始时间是1970还是1971年了,于是就改成了人工记忆、计算比较方便的1970年了。追问unix时间戳这个我懂,就不懂为啥微软还搞个Ox00????的时间,意义何在,这样数据库转换难度增大,而且自家的excel算法又跟一般的程序算法不一样,好像excel月份是按30天算?正常程序都是按每个月的具体天数算(比如2月28天,闰二月29天,一三五七八十腊31天,其它30天),我也是最近读取数据库才发现微软还有这种16进制时间的存在,所以感到很迷
热心网友
时间:2023-10-23 07:57
1、最懒的解释
很多编程语言起源于UNIX系统,而UNIX系统认为1970年1月1日0点是时间纪元,所以为偶们常说的UNIX时间戳是以1970年1月1日0点为计时起点时间的。
2、深入的了解
最初计算机操作系统是32位,而时间也是32为表示。
System.out.println(Integer.MAX_VALUE);追问我现在不懂的是为啥微软16进制时间是从1900年1月1日00:00:00.000算起,时间戳我知道,就是被微软这样搞有点混乱
热心网友
时间:2023-10-23 07:57
别问了 这东西 没有啥答案 我查很很多 答案千篇一律 但无法解释