You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M语言中如何将当前日期时间转换为秒级Epoch/Unix时间?

在M语言(Power Query)中转换当前时间为秒级Unix时间戳

嘿,这个问题我之前也碰到过!M语言确实没有直接返回秒级Epoch时间的内置函数,但咱们可以照着你C#里的思路手动实现,逻辑完全一致,很容易搞定。

核心思路就是计算当前UTC时间和Unix时间的起始点(1970年1月1日0点0分0秒 UTC)之间的时间差,然后取这个时间差的总秒数。

完整实现代码

let
    // 获取当前的UTC时间(一定要用UTC,Unix时间是基于UTC的)
    CurrentUtcTime = DateTime.UtcNow(),
    // 定义Unix Epoch的起始时间(必须是UTC时区的1970-01-01 00:00:00)
    EpochStartTime = #datetime(1970, 1, 1, 0, 0, 0),
    // 计算两个时间的时间差,并转换为总秒数
    EpochSeconds = Duration.TotalSeconds(CurrentUtcTime - EpochStartTime)
in
    EpochSeconds

补充说明

  • 为什么要用UTC时间?因为Unix时间戳的定义就是从1970-01-01 UTC开始的秒数,如果你用本地时间(DateTime.LocalNow())计算,结果会和标准Unix时间有偏差,所以一定要用UTC时间。
  • 如果需要整数形式的秒数(不带小数),可以用Number.Round()或者Number.IntegerDivide()来处理:
    EpochSecondsInteger = Number.Round(EpochSeconds, 0)
    

这个实现和你给出的C#代码逻辑完全匹配,只是换成了M语言的语法而已,亲测有效哦!

内容的提问来源于stack exchange,提问作者mehwish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:15:01