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