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

如何获取秒级当前时间戳?Dyalog APL中Unix时间戳实现咨询

嘿,我来帮你搞定Dyalog APL里的时间戳问题!

首先直接回答你的第二个疑问:⎕TS本身没办法直接返回Unix时间戳(也就是从1970-01-01 UTC起算的秒数),但我们可以用它结合Dyalog的其他工具函数,轻松计算出这个值。

核心思路:用Julian日期计算时间差

Unix时间戳的本质是当前时间与1970-01-01 00:00:00 UTC的秒数差。我们可以借助Julian日期(一种连续计数的日期格式)来完成这个计算:

  • ⎕TS会返回本地时间的向量:[年 月 日 时 分 秒(含小数)],比如2024 5 20 16 10 22.345
  • 用⎕DT函数把这个向量转换成Julian日期
  • 用该Julian日期减去1970-01-01 UTC对应的Julian日期(2440587.5),再乘以一天的秒数86400,就得到了Unix时间戳

具体代码示例

1. 获取本地时间的Unix时间戳(含小数秒)

getUnixTimestamp ← {
    ⍝ 输入:⎕TS/⎕UTC返回的日期时间向量,输出:Unix时间戳(含小数)
    86400 × (⊃⎕DT 8 7 ⍵) - 2440587.5
}

⍝ 调用示例:当前本地时间的时间戳
getUnixTimestamp ⎕TS

2. 获取整数秒的Unix时间戳

如果只需要整数形式的秒数,用⌊取整即可:

getUnixTimestampInt ← {
    ⌊86400 × (⊃⎕DT 8 7 ⍵) - 2440587.5
}

⍝ 调用示例
getUnixTimestampInt ⎕TS

3. 获取UTC标准的Unix时间戳

如果需要严格的UTC时间戳(而非本地时间),把⎕TS替换成⎕UTC(返回UTC时间的向量):

getUnixTimestampUTC ← {
    ⌊86400 × (⊃⎕DT 8 7 ⍵) - 2440587.5
}

⍝ 调用示例
getUnixTimestampUTC ⎕UTC

回答你的第一个问题

要获取以秒为单位的当前时间戳(Unix格式),直接用上面的getUnixTimestampInt ⎕TS(本地时间)或者getUnixTimestampUTC ⎕UTC(UTC时间)就可以啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:14:50