1500000000

搬运论道,原文地址这里

北京时间 2017年7月14日10:40:00,UNIX纪元1500000000秒,这代表着从1970年1月1日0时0分0秒(北京时间1970年1月1日8时0分0秒)到现在已经150000000秒了。不用数了,一共8个0 ,而上一次1400000000是在北京时间2014年5月14日0时53分20秒。所以以后debug获取系统时间的时候再也看不到1499……了。
unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。每过1秒,他就增加1秒,1分钟,就60秒,就是这么简单的工作,从0数到了1500000000 。

时间
1 分钟 60
1 小时 3600
1 天 86400
1 周 604800
1 月 (30.44 天) 2629743
1年 (365.24 天) 31556926

那么,如何得到现在的时间戳是多少呢?一般来说都有各种各样的在线工具可以自己查看当前的时间戳,自行搜索即可。
在windows下可以用powershell输入以下命令即可查看:

1
[int]( date -uformat "%s")

而在各种编程语言中,也提供了相应的函数或方法。(部分未验证)

编程语言 指令
Java time
JavaScript Math.round(new Date().getTime()/1000)
getTime()返回数值的单位是毫秒
Microsoft .NET / C# epoch = (DateTime.Now.ToUniversalTime().Ticks-621355968000000000) / 10000000
MySQL SELECT unix_timestamp(now())
Perl time
PHP time()
PostgreSQL SELECT extract(epoch FROM now())
Python 先 import time 然后 time.time() 返回1476929706.5320001
可以 int(time.time())
Ruby 获取Unix时间戳:Time.now 或 Time.new
显示Unix时间戳:Time.now.to_i
SQL Server SELECT DATEDIFF(s, ‘1970-01-01 00:00:00’, GETUTCDATE())
Unix /Linux/类UNIX/OS X date +%s
VBScript / ASP DateDiff(“s”, “01/01/1970 08:00:00”, Now())
lua os.time() 返回时间戳
FreeSWITCH fs_cli > strepoch
或者:
fs_cli > eval ${strepoch()}
或者:
(在 freeswitch里面,获取linux系统的时间戳)
fs_cli > system date +%s
其他操作系统
(如果Perl被安装在系统中)
命令行状态:perl -e “print time”

机智的你可能发现了时间戳是从北京时间1970年1月1日8时0分0秒开始的,那么之前的呢?答案很简单,负数。所以-1500000000是北京时间1922年6月21日5时20分0秒(gcd成立快1年了……)。但是这个负数也会引起一些有趣的bug,比如在iPhone上把时间调到1970年1月1日,你将获得一块砖头(❀????,当然这个bug早就被简单粗暴地修复了)。

所以,我们也可以先看下下一次1600000000是什么时候了,经过换算后可以得到是北京时间2020年9月13日20时26分40秒(应该是全面小康了吧……)。当然,比起1600000000,1700000000,我更期待的是2147483648,也就是北京时间2038年1月19日11时14分0秒,嘿嘿。2的32次方是4294967296,而在32位系统中最高位是符号位的情况下,int的最大值是2147483647,所以嘛……当然了,也不排除那时候32位都淘汰了……

谢谢你请我吃果冻