Skip to main content

meetingtime

Convert one date + time into a nicely formatted summary across many time zones.

meetingtime --from America/Toronto --date 20260710 --time 0900 \
    --to Toronto London 'Los Angeles' Tokyo
Toronto (Jul 10, 09:00 EDT); London (Jul 10, 14:00 BST); Los Angeles (Jul 10, 06:00 PDT); Tokyo (Jul 10, 22:00 JST)

Install / run

With uv (no install needed):

uvx --from /path/to/meetingtime meetingtime --from Toronto --date 20260710 --time 0900 --to London Tokyo

Or install it as a persistent tool:

uv tool install /path/to/meetingtime
meetingtime --from Toronto --date 20260710 --time 0900 --to London Tokyo

Or with plain pip:

pip install /path/to/meetingtime

Usage

meetingtime --from ZONE --date YYYYMMDD --time HHMM [--to ZONE [ZONE ...]]
       [--profile NAME] [--exclude ZONE [ZONE ...]]
       [--format TEMPLATE] [--date-format STRFTIME] [--time-format STRFTIME]
       [--separator SEP] [--config PATH]
  • --from — source time zone. Accepts an IANA name (America/Toronto) or a friendly city alias (Toronto). See src/meetingtime/aliases.py for the full list.
  • --date — source date as YYYYMMDD, e.g. 20260710.
  • --time — source time as 24-hour HHMM, e.g. 0900.
  • --to — one or more target zones/cities. If --profile is given, these are added on top of the profile's zones. If omitted with no profile, falls back to the timezones list in your config file, or just the source zone.
  • --profile — use a named [profiles.NAME] section from the config file as the base zone list.
  • --exclude — zones/cities to remove from the final output. Takes precedence over all other zone sources including --to and --profile.
  • --format — a format name defined in [format], a literal template string using {city} {date} {time} {abbr} {tz} placeholders, or the special value markdown for a table. Default: '{city} ({date}, {time} {abbr})'.
  • --date-format — strftime pattern for the {date} field. Default: %b %-d (e.g. Jul 10). Example: --date-format '%Y-%m-%d' → 2026-07-10. Can also be set via date_format in the config file.
  • --time-format — strftime pattern for the {time} field. Default: %H:%M (e.g. 14:00). Example: --time-format '%I:%M %p' → 02:00 PM. Can also be set via time_format in the config file.
  • --separator — string used to join entries (default '; ').
  • --config — path to a TOML config file (default ~/.config/meetingtime/config.toml).

Config file

Avoid retyping your team's zones every time by creating ~/.config/meetingtime/config.toml:

date_format = '%Y-%m-%d'
time_format = '%I:%M %p'

[format]
short   = '{city} {time} {abbr}'
compact = '{city} ({time})'

[profiles.work]
timezones = ['America/Toronto', 'Europe/London', 'Asia/Tokyo']
format = 'short'

[profiles.asia]
timezones = ['Asia/Singapore', 'Asia/Hong_Kong', 'Asia/Tokyo']

See examples/config.toml for a more complete example.

Then run with a profile:

meetingtime --from Toronto --date 20260710 --time 0900 --profile work

Add extra zones on top of the profile:

meetingtime --from Toronto --date 20260710 --time 0900 --profile work --to Singapore

Exclude a zone from the output:

meetingtime --from Toronto --date 20260710 --time 0900 --profile work --exclude Tokyo

Markdown table output

meetingtime --from Toronto --date 20260710 --time 0900 --to Toronto London Tokyo --format markdown
| City | Time |
| --- | --- |
| Toronto | Jul 10, 09:00 EDT |
| London | Jul 10, 14:00 BST |
| Tokyo | Jul 10, 22:00 JST |

Metadata

Release files for meetingtime 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for meetingtime 0.3.1
File Size Uploaded
meetingtime-0.3.1.tar.gz 21.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for meetingtime 0.3.1
File Interpreter ABI Platform
meetingtime-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 31.4 kB

Release files / meetingtime-0.3.1.tar.gz

Download URL meetingtime-0.3.1.tar.gz
Size 21.2 kB
Tags Source
SHA-256 checksum
How to use checksums
3baee2375eb97117d7d4bdadce77ffca89a682de240feb510da2c5a684677ca6
BLAKE2b-256 checksum
How to use checksums
e7e5ee4b9b0350179d404585a377a881b40d722ad7ee3d4e97a7e4c79a131802
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / meetingtime-0.3.1-py3-none-any.whl

Download URL meetingtime-0.3.1-py3-none-any.whl
Size 10.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
06dc7ac6848a3627a588da2235682d6bffe737e7724c4bfd590e10bd15c6a36a
BLAKE2b-256 checksum
How to use checksums
4946faa40a9c16c3a021dd3d2c73cec26833bd24824eee1297261c8ad6d69ea0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page