加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱资讯网 (https://www.52junxun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

Unix时间戳转换

发布时间:2022-09-24 12:54:45 所属栏目:Unix 来源:
导读:  Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
  Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用。
 
  有些从系统导出或网抓的数据,时间为时间戳格式,Power Query并没有直接的函数对其转换,但可以通过自定义函数实现。
 
  let
      timestamp = (x)=>#datetime(1970,1,1,8,0,0)+#duration(0,0,0,x),
      time = timestamp(1502374503)
  in
      time
  公式非常简单,duration表示持续时间,直接加上起始的北京时间。
 
  而有些语言的时间戳是13位的,比10位的精度更高一些,高在后3位。但是精不精度和我们没什么关系,我们不需要unix时间戳,把后三位去掉即可。
 
  let
      timestamp = (x)=>#datetime(1970,1,1,8,0,0)+#duration(0,0,0,Number.IntegerDivide(x/1000,1)),
      time = timestamp(1502353621929)
  in
      time
  如果是反过来,要把时间转换为时间戳呢?
 
  那就先用时间减去初始时间,然后转换为总秒数,结果可能为小数,最后再取个整。以求当前时间的时间戳为例:
 
  let
      time = (x)=> Number.IntegerDivide(Duration.TotalSeconds(x-#datetime(1970,1,1,8,0,0)),1),
      timestamp = time(DateTime.LocalNow())
  in
      timestamp
 

(编辑:我爱资讯网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章