• 北京时间 2022-4-14 凌晨零点零分零秒 就是 1649865600
  • 北京时间 2022-4-14 凌晨零点零分一秒 就是 1649865601
  • 北京时间 2022-4-14 凌晨零点零分二秒 就是 1649865602 。 这样,过一秒,就加一。
  • 那么过 一小时 ,就加 3600 , 即 1649865600 + 3600 = 1649869200

    那么 1649869200 这个时间戳,就是 2022-4-14 凌晨一点零分零秒

    时间戳的好处

    不管你在哪,用的什么系统,时间戳都是一样的。

    由于时间戳就是一个整数,存储起来比较方便,也可以比较大小,何乐而不为

    关于时间的推算

    比如说,当前时间戳是 t t ,

  • 那么一小时后就是 t + 3600 t + 3600
  • 一周后就是 7天后: t + 3600 24 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 , 那么有:

    t = 1293811200 + N 86400 + x ( 1 ) t = 1293811200 + N * 86400 + x \ \ \ \ \ \ (1 式)

    这个 x x 就是今天凌晨到现在为止的秒数,且 x < 86400 x < 86400

    t 凌晨 = t x = 1293811200 + N 86400 t_{凌晨} = t - x = 1293811200 + N * 86400

    我们现在的目的就是要知道 N * 86400。

    根据 ( 1 ) (1 式) :

    t 1293811200 = N 86400 + x ( 2 ) t - 1293811200= N * 86400 + x \ \ \ \ \ \ (2 式)

    看一下 ( 2 ) (2 式)

    右边是一个 86400 的整数倍 和一个不到 86400的数字相加,根据整数乘除法:

    N 86400 = t 1293811200 86400 86400 ( G O O D ! ) N * 86400 = \frac{t - 1293811200}{86400} * 86400\ \ \ \ \ \ \ (GOOD!)

    得到了已经:

    t 凌晨 = t x = 1293811200 + N 86400 = 1293811200 + t 1293811200 86400 86400 t_{凌晨} = t - x = 1293811200 + N * 86400 = 1293811200 + \frac{t - 1293811200}{86400} * 86400

    验证一下:

  • 当前时间戳是 1649909532 ->北京时间 2022-04-14 12:12:12
  • 1293811200 + 1649909532 1293811200 86400 86400 1293811200 + \frac{1649909532 - 1293811200}{86400} * 86400
  • = 1293811200 + 4121 86400 1293811200 + 4121 * 86400
  • = 1293811200 + 356054400 1293811200 + 356054400
  • = 1649865600 1649865600 --> 恰好就是 北京时间 2022-04-14 0:0:0 , 成功。
  • 基于 ChatGPT 和 React 搭建 JSON 转 TS 的 Web 应用
  • 前端配置化真香~上班又多了60%的摸🐟时间
  •