北京时间
2022-4-14 凌晨零点零分零秒
就是
1649865600
。
北京时间
2022-4-14 凌晨零点零分一秒
就是
1649865601
。
北京时间
2022-4-14 凌晨零点零分二秒
就是
1649865602
。
这样,过一秒,就加一。
那么过
一小时
,就加
3600
, 即
1649865600 + 3600 = 1649869200
。
那么
1649869200
这个时间戳,就是
2022-4-14 凌晨一点零分零秒
。
时间戳的好处
不管你在哪,用的什么系统,时间戳都是一样的。
由于时间戳就是一个整数,存储起来比较方便,也可以比较大小,何乐而不为
关于时间的推算
比如说,当前时间戳是
t
,
那么一小时后就是
t
+
3600
一周后就是 7天后:
t
+
3600
∗
24
∗
7
简单获取整点时间戳
比如说北京时间
2022-04-14 12:12:12
的时间戳是
1649909532
。
那么如何得出
2022-04-14 12:00:00
的时间戳呢?
如果用整数乘除法的话:
整点时间戳 = (现在时间戳 / 3600) * 3600
做个验证:
1649909532 / 3600 = 458308
458308 * 3600 = 1649908800 恰好就是
2022-04-14 12:00:00
的时间戳。
根据这个算法,整五分钟的时间戳:
整五分钟时间戳 = (现在时间戳 / 300) * 300
整十分钟时间戳 = (现在时间戳 / 600) * 600
以此类推。
获取今日凌晨零点时间戳
比如说,现在已经获取了当前时间戳是 1649909532 ->北京时间
2022-04-14 12:12:12
。
那么如何得知当前时间戳的凌晨零点时间戳呢, 也就是北京时间
2022-04-14 0:0:0
的时间戳是多少?
根据上面的算法,一天就是24小时,就是86400秒,那么简单:
凌晨时间戳 = (当前时间戳 / 86400) * 86400
我们来验证一下:
1649909532 / 86400 = 19096
19096 * 86400 = 1649894400 -> 北京时间
2022-04-14 08:00:00
从这个结果可以看出,这样算不行。
因为
今日凌晨
这个概念里包含了
时区
的划分了。不同的时区,关于
今天
描述是不同的时间。
这里给一种
取巧型算法
:
我们随便找一天时间的凌晨零点时间戳,比如说:北京时间
2011-1-1 0:0:0
的时间戳是:
1293811200
。
我们知道,一天就是 86400 秒,也就是说,
2011-1-1 0:0:0
之后的每一天的凌晨零点时间戳都是:
1293811200 + N * 86400, 其中 N 是正整数。
假设当前时间戳是
t
, 那么有:
t
=
1293811200
+
N
∗
86400
+
x
(
1
式
)
这个
x
就是今天凌晨到现在为止的秒数,且
x
<
86400
。
t
凌晨
=
t
−
x
=
1293811200
+
N
∗
86400
我们现在的目的就是要知道 N * 86400。
根据
(
1
式
)
:
t
−
1293811200
=
N
∗
86400
+
x
(
2
式
)
看一下
(
2
式
)
右边是一个 86400 的整数倍 和一个不到 86400的数字相加,根据整数乘除法:
N
∗
86400
=
86400
t
−
1293811200
∗
86400
(
GOO
D
!)
得到了已经:
t
凌晨
=
t
−
x
=
1293811200
+
N
∗
86400
=
1293811200
+
86400
t
−
1293811200
∗
86400
验证一下:
当前时间戳是 1649909532 ->北京时间
2022-04-14 12:12:12
1293811200
+
86400
1649909532
−
1293811200
∗
86400
=
1293811200
+
4121
∗
86400
=
1293811200
+
356054400
=
1649865600
--> 恰好就是 北京时间
2022-04-14 0:0:0
, 成功。