Cloudflare工人的常规Date对象都返回1970年1月1日...
用工人代码获取当前日期时间的正确方法是什么?
谢谢
G
答案 0 :(得分:5)
Date
对象在全局范围内执行时仅返回1970-01-01。如果您在事件处理程序中使用该请求,它将正确返回当前日期。
let globalDate = Date.now(); // always zero
addEventListener("fetch", event => {
let localDate = Date.now(); // will return actual current date
})
背景
原因是Cloudflare Workers在未指定的时间运行全局范围。请求到达时可能是按需的,但可能更早。从理论上讲,工作者甚至可以只执行一次全局范围,然后对状态进行快照,并在边缘执行时从快照开始。为了确保这些不同的实现选项不会影响已部署工作程序的行为,工作程序运行时必须确保全局范围的执行是完全确定的。除其他外,这意味着Date.now()
在全局范围内执行时必须始终返回相同的值-零。