如何获取秒级当前时间戳?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
相关产品推荐
相关产品推荐

