Package: undertime
Undertime - pick a meeting timeThis program allows you to quickly pick a meeting time across multiple
timezones for conference calls or other coordinated events. It shows
all times of a given day for all the timezones selected, in a table
that aligns the time so a line shows simultaneous times across all
timezones. This takes into account daylight savings and other
peculiarities (provided that the local timezone database is up to
date) so you can also schedule meetings in the future as well.UsageTimezones should be passed on the commandline and are matched against
thelist of known timezones, as defined by thepytzpackage. Exact matches are attempted at first, but if that fails,
substring matches are allowed, which makes it possible to do this:undertime --timezones New_York Los_AngelesThe complete list of timezones is also shown when the--list-zonescommandline option is provided. Note that in recent
tzdata versions, legacy zones likeUS/EasternorUS/Pacifichave been removed, as many others. Install thetzdata-legacypackage to restore those.Because daylight savings may actually change time, you can also
specify the time to pick an arbitrary time for the meeting, using
natural language (as parsed by thedateparserorparsedatetimemodules, if available). The current time is also shown, in bold. This,
for example, will show the time “tomorrow” at the same time as today:undertime tomorrowOr the next September 21st at 19:00 local time:undertime September 21 19:00Colors are used to highlight the “work hours” where possible meeting
times could overlap. You can change those work hours with the--startand--endflags. The number of zones matching those
hours is listed in the last column.The output format is controlled by thetabulateprogram. See thetabulate documentationfor more information about the
possible outputs.A configuration file can be used to set defaults, see theundertime.ymlfile for an example.Summary usage is available with the--helpflag and full help in
the manpage. Instructions for how to contribute to the project are inCONTRIBUTING.rstand there is aCODE_OF_CONDUCT.rst.Known issues and limitationsUndertime was written using Python 3.5 and 3.7 and there is no
guarantee it will work in older (or newer) Python releases.Timezones – and time in general – are hard problems: the math is
hard, and the zones constantly. What may be applicable to your
location at the current time may not be reflected by your operating
system or the chain of software used by this program to determine
time.According to this videofromTom Scott, “you really should never, ever deal with timezones if
you can help it”. This sounds a lot like what this program does, but
do note that:“What you learn, after dealing with timezones, is that what you
do, is you put away your code, you don’t try and write anything to
deal with this. You look at the people who have been there before
you. You look at the first people, the people who’ve done this
before, the people who’ve built the spaghetti code, and you go to
them, and you thank them very much for making it open source, and
you give them credit, and you take what they’ve made, you put it
in your program. and you never ever look at it again. because that
way lies madness.”—Tom ScottThat is what this program does. It reuses thepytzlibrary based on
theOlson tz database. See the Credits section for more information.Time is an illusion we created to rationalize our unbearable
ephemerality and is bound to be imprecise, confusing and flawed. It’s
neither your fault or your computer’s: accept and embrace its
humanity.InstallingThis program can be installed usingpipfrom thePyPI
repository, like so:pip3 install undertimeThe above assumes you’re running a distribution that installs the
Python 3 version ofpipaspip3, you might need to replace
that with justpipon some setups.This program is also packaged in Debian (since Debian 10 “buster”), so
you can also install it with:apt install undertimeIf you downloaded this source code and want to installthatdirectly, you can simply run:pip3 install .CreditsThis program was written by Antoine Beaupré and is licensed under the
AGPLv3+. I rewroteovertime-cliin Python because I felt we
shouldn’t need a Javascript virtual machine to pick a time. I was also
curious to see how such a rewrite would look like and was tired of
loading a web browser every time I needed to figure out what time it
was elsewhere in the world or when I needed to coordinate
international meetings.All of this wouldn’t have been possible without thepytzlibrary
written by Stuart Bishop, itself based on theOlson tz databasefounded by Arthur David Olson and currently maintained by Paul
Eggert. Those packages are shipped to your favorite Debian
distribution by package maintainers who struggle to keep up with those
constant changes so credits should also go to thetzdata package
maintainers(currently Adam Conrad, Aurelien Jarno, and Clint Adams)
along with everyone in the Debian project keeping all those packages
up to date. Thank you for dealing with humanity’s confusing,
beautiful and complex quirks for all of us.Similar projectscrab fit: web-based, timezone-sensitive meeting planner, free
softwareovertime-cli: primary inspiration for undertimetimeanddate.com: what I was using before, non-freetzdiff: strickingly similar, but discovered a few months after
writing undertimewhen: shows time as blocks, interesting syntax (e.g.now in yyz->sfo->lhr)worldchatclock.com: beautiful round, web interface, non-freeworldtimebuddy.com: simple web interface, clever horizontal
design, non-free