Timezone-aware datetime - zdt

  • datetime and timezone handling in one lib
  • no separate types for date and time
  • hybrid approach: datetime combines incremental and field based representation (Unix time, year, month, etc. fields)
  • relatively simple concept for time zone type (IANA-db file and/or offset from UTC)
  • uses the TZif parser from the Zig standard library

This post is sort of a follow-up to What’s the state of datetime in Zig?. I’m happy that writing a library to handle datetime with time zones worked out well, Zig is fun to code in and its context (the community etc.) is nice. The goal for zdt is “exploration”, not to build something according to some spec. There’s probably a lot to do better, and a lot of edge cases to catch.


Some context; the proposal to add datetime functionality to the Zig standard lib is still open. There also has been a pull request, which is now closed (2024-01-08).

11 Likes

Time for an update.

Thanks to you people here, answering all my noob question, I could add a couple of features :sunglasses: Notably,

  • an ISO8601 string parser, which infers the input format at runtime
  • implementation of the IANA time zone database within the package, so it can be used cross-platform
  • a method to obtain the local time zone (Linux and Windows)

You can find demos for these features in the examples. There’s a build-step to compile them, zig build examples.

5 Likes