Announcing Casual Timezone
02 Jun 2025 Charles Choi
Because the Internet, it is a blessing of our time that interacting with people in different time zones is commonplace. In this, the question is often raised: “what time is it there?” This is routinely answered using a clock app or a website.
While Emacs has long had the ability to make time zone calculations, it seemed overdue to have tooling that takes advantage of it.
Announcing Casual Timezone, now available as part of the Casual v2.5.0 update on MELPA.
The following screencast shows Casual Timezone in action, in this case a meeting planner (command: casual-timezone-planner
) that compares the hours with your local time zone with that of another.
Casual Timezone also lets you directly ask:
- “What time is it over there?” (command:
casual-timezone-local-time-to-remote
) - “That time over there, what is it here?” (command:
casual-timezone-remote-time-to-local
)
Note that at current, Casual Timezone only supports Unix-variant systems as it relies on the tz database. It has been tested on macOS 15.5 and Ubuntu Linux 22.04. Sorry Windows users, but I’m open for a PR for Windows support if a workaround for zoneinfo is available.
Closing Thoughts
With experience, I’ve learned to be humble about working with time APIs. While I’ve done much to ensure the results are accurate, I would not be surprised if there are bugs, especially for a first release. Let me know if you find any.
On reflection, putting Casual Timezone together was relatively easy as it was largely an exercise in integrating different Elisp packages:
- From Org, the command
org-read-date
provided the date picker UI. - Built-in completion provided the UI for selecting a time zone.
vtable
provided the table interface forcasual-timezone-planner
.- The table interface was configured as a derived mode to provide mode-specific behavior.
- The built-in time functions were used for time zone calculations and formatting.
- Transient provided support for menus.
Gonna call this an Elisp code-reuse success story.