A curated list of awesome Swatch Internet Time libraries, software and resources.
Contributions like pull requests and discussion are welcome :-)
- Official, Basic Info
- Web Clocks and Converters
- Community
- Original Swatch Net Time Watches
- Smart Watches
- Mobile
- Operating Systems
- Applications
- Programming Languages, Libraries
- Method of Calculation
- Discussions
- News Articles
- Related
- Swatch Internet Time webpage - it has a funny video about an important gotcha with Internet Time: Because it is the same time everywhere does not mean that they are in the same place of their day/night cycle.
- Wikipedia
- internet-ti.me
- great tool for non-beat users: https://internet-ti.me/@610 -- directly shows time in local time and world time zones, generates metadata for embedding into social media
- also has a converter
- source code - By Jessica Stokes.
- swatchclock.com
- gwil.co
- with links to some implementations
- CSGNetwork converter and display
- on Reddit
- GitHub Discussion here on the repo
- Github projects with tag "swatch-internet-time"
- Github projects with tag "internet-time"
- Swatch does not sell them any more.
- search for Swatch Originals .Beat Net Time SQN101
- Apple Watch: internet-beat by Jessica Stokes
- Android und Galaxy Watch: by derfreimann
- with estimated total number of installs
- GitHub search for watch face internet time beats
- Pebble watch: watch faces on GitHub
- getpebble.com redirects to fitbit.com, so it seems Pebble has been bought by Fitbit
- in-VR clock - Written in JavaScript.
- Android: by cbateman
- iPhone: beat-internet-time
- iOS and Apple Watch: NetTime by Simon Rice
- MacOS: dotbeat and dotbeat developer repository
- Windows: Beat-Time
GNOME:
- clock Override
- would be best solution since it can do @ time already
- but it is necessary to fix it for Gnome v40+, author is not happy with performance on v40+ but it is possible
- date menu formatter
- works for Gnome v40+ but has no @time
- Modification for @time with help of code snippet from this function in clock-override extension, bit of a hack:
editor ~/.local/share/gnome-shell/extensions/[email protected]/extension.js
- Add import and timezone at top (note that date-menu-formatter uses an other date system for the other date formats, todo):
const GLib = imports.gi.GLib; let bmttz = GLib.TimeZone.new('+01');
- Add beat time display in
update()
:If you want to add UTC display as well:setText(Utils.convertFromPattern(this._formatter.format(PATTERN, new Date())) + " @" + this.formatBeatTime());
If you want the ISO 8601 calendar week as well:var now = new Date(); var utc = new Date(now.getTime() + now.getTimezoneOffset() * 60000); setText( Utils.convertFromPattern(this._formatter.format(PATTERN, now)) + " @" + this.formatBeatTime() + " Z" + Utils.convertFromPattern(this._formatter.format('kk:mm', utc)) );
...and add function for ISO8601 calendar week at the top from the sourcevar now = new Date(); var utc = new Date(now.getTime() + now.getTimezoneOffset() * 60000); setText( Utils.convertFromPattern(this._formatter.format(PATTERN, now)) + " @" + this.formatBeatTime() + " Z" + Utils.convertFromPattern(this._formatter.format('kk:mm', utc)) + " W" + now.getWeekNumber() );
- Add function below:
formatBeatTime() { var bmtnow = GLib.DateTime.new_now(bmttz); var beat_time = 0 | ( bmtnow.get_second() + ((bmtnow.get_minute() * 60) + (bmtnow.get_hour() * 3600)) ) / 86.4; return ('000' + beat_time).slice(-3); }
- Test change without rebooting:
dbus-run-session -- gnome-shell --nested --wayland
- Restart GNOME shell by pressing Alt+F2 and enter "r" for restart (all windows remain open as they were).
KDE:
- TODO
- Slack Bot und slash command - Written in Rust.
- Discord on on GitHub using a Bot
- emacs
- TODO Thunderbird
- TODO Outlook
Project listings:
- GitHub topic swatch-internet-time
- GitHub topic internet-time
- Gitlab and Sourcehut provided 0 results
Rust:
- on GitHub
- beats crate
- gil_beats by Gil Desmarais
- algorithm is unefficient
- daph/beats
Go:
C:
- beats by j0hax - Also with links to other C implementations.
- TODO coreutils formatter %@ ? date tool? glibc? -- date(1) uses
fprintftime()
and this again usesstrftime()
from glibc.
Shell script:
The script is so trivial, I show it here directly:
$ printf "@$(( ( ( ( $(date "+%s") + 3600 ) % 86400 ) * 10 ) / 864 ))\n"
JavaScript:
TypeScript and React:
Python:
PHP:
- in standard library - using the DateTime format "B"
C#:
Elixir:
Typescript:
- dot-beat-time
- use-beat-time - For React apps.
Java:
Kotlin and Android:
Perl:
- DateTime::Complete - With module IBeat.
- DateTime::Format::Builder::Parsers::Quick - For parsing.
- Get time
now
either in UTC or UTC+1 where Biel is located. Re-use the timezone object since it will not change. Getting UTC is usually easy, then simply add+1
to the hour part in the calculations below. - Method using seconds as basis using multiplication. On x86, multiplication is faster than division and floating point division is faster than integer division.
beats = ( now.get_second() + ((now.get_minute() * 60) + ((now.get_hour() + 0) * 3600)) ) / 86.4
- Method using hour as basis using division:
beats = (now.get_hour() + (now.get_minute() / 60) + now.get_second() / 3600) * 1000 / 24
- Method using some form of "time since midnight" in UTC+1. For example, if this is efficient to acquire:
unixutc = time(NULL); # unix time is always UTC, so add 1 hour unixbmt = unixutc + 3600; # get seconds since midnight secsincemidnight = unixbmt % 86400; beats = secsincemidnight / 86.4;
- Any more?
- Discussion on c2wiki
- Fifth World wiki - what is a Fifth World country
- on TimeAndDate
- by Sandra - original at gemini://idiomdrottning.org/beat-time
Advantage:
- Worldwide synchronized clocks.
Disadvantage:
- Cannot easily deduce if somebody is awake at that time or not. Then again,
- they don't have to accept the meeting invitation for that time. OTOH, avoid meetings anyway.
- There is often times an online status function in internet communications platforms and telephone systems these days have a DND function when not available for calls.
- There is UTC.
Limitations:
- The Earth will always go around the sun. Meaning, it will never be physically day or night everywhere at the sime time. There will always be two choices:
- Favoring the local day/night and roughly following the biological cycle but having to calculate for worldwide coordination or
- favoring easy worldwide coordination without calculations, as in the case of Internet Time, but requiring to take care of the availability of others, which in today's networked systems is easy to do.
- ZDnet from 2000 - Also with sales data (2M devices in first 2 years, time converter downloaded over 5 million times in first 2 years).
- How stuff works
- Baltimore Sun article from 1999
- Vice 2015
- academic dict
- CNN 1999
- Github projects with tag "decimal-time"
- Github projects with tag "metric-time"
- New Earth Time - Based on 360 degrees per day. So un-decimal.
- Using UTC as basis for Internet Time instead of UTC+1 ("BMT").
- UTC iself.