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

1

10

The usual Date object on Cloudflare's workers, all return 1 jan,1970...

What is the proper way to get the current datetime in a workers' code?

Thanks,

G

Karbala answered 21/10, 2019 at 17:1 Comment(0)
S
31

The Date object only returns 1970-01-01 when executed at the global scope. If you use it during the event handler for a request, it will correctly return the current date.

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

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

Background

The reason for this is that Cloudflare Workers runs the global scope at an unspecified time. It might be on-demand when a request arrives, but it could be earlier. In theory, Workers could even execute the global scope only once ever, and then snapshot the state and start from the snapshot when executing on the edge. In order to ensure that such different implementation options do not affect the behavior of deployed workers, the Workers Runtime must ensure that the global scope's execution is completely deterministic. Among other things, that means Date.now() must always return the same value -- zero -- when executed at the global scope.

San answered 21/10, 2019 at 17:27 Comment(1)
Here is some more info on it: community.cloudflare.com/t/…Halter

© 2022 - 2024 — McMap. All rights reserved.