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

时间:2019-10-21 17:01:33

标签: cloudflare-workers

Cloudflare工人的常规Date对象都返回1970年1月1日...

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

谢谢

G

1 个答案:

答案 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()在全局范围内执行时必须始终返回相同的值-零。