如何在 Cloudflare 的工作人员中获取当前日期

How to get the current date in a Cloudflare's worker

Cloudflare workers 上的常用 Date 对象,全部 return 1 jan,1970...

在工人代码中获取当前日期时间的正确方法是什么?

谢谢,

G

在全局范围内执行时,Date 对象仅 returns 1970-01-01。如果您在请求的事件处理程序中使用它,它将正确地 return 当前日期。

let globalDate = Date.now();  // always zero

addEventListener("fetch", event => {
  let localDate = Date.now();  // will return actual current date
})

背景

原因是 Cloudflare Workers 在未指定的时间运行全局范围。当请求到达时它可能是按需的,但也可能更早。理论上,Workers 甚至可以只执行一次全局范围,然后在边缘执行时快照状态并从快照开始。为了确保这种不同的实现选项不会影响部署的 workers 的行为,Workers Runtime 必须确保全局范围的执行是完全确定的。除其他事项外,这意味着 Date.now() 在全局范围内执行时必须始终 return 相同的值——零。