A curated list of awesome Swatch Internet Time libraries, software and resources.
Contributions like pull requests, issues and discussion are welcome :-)
- Official, Basic Info
- Web Clocks and Converters
- Community
- Physical Clocks and 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
- It seems that Charly Alberti invented the idea as I-Time for "Internet Time", sent it to Swatch as a business proposal and they made "Swatch Internet Time" out of it a few months later. (Newspaper article, Charly Alberti commenting on it in comments section, Miami New Times article). The website for it was www.i-time.com and was online from 1998 to 2001.
- Swatch Internet Time brochure (PDF, hilariously '90s)
- internet-ti.me
- meeting aid via URL 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.
- beats.wiki
- clock re-calculates precisely, ie. at correct sub-second interval
- updates the HTML title, so you get time in browser tab title
- has a meeting aid via URL: https://beats.wiki/2021-08-06@31.94
- swatchclock.com
- gwil.co
- with links to some implementations
- CSGNetwork converter and display
Userscript for patching into your webbrowser:
- on Reddit
- GitHub Discussion here on the repo
- Github projects with tag "swatch-internet-time"
- Github projects with tag "internet-time"
The Original Swatch Net Time Watches:
- Swatch does not sell them any more.
- search for Swatch Originals .Beat Net Time SQN101
Physical clocks:
- Round self-made clock by Roni Bandini, reported on Hackaday, with comments from Charly Alberti (source code, project details, with newspaper article about Charly Alberti's iTime)
Apple Watch:
- internet-beat by Jessica Stokes
- by Jessica Stokes - links to another app on Apple Appstore
- by mulot
- NetTime by Simon Rice
Android und Galaxy Watch:
- by derfreimann, with estimated total number of installs
Others:
- 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 as a handy widget for the home screen (alternative source from APKpure)
- by mirk0dex as a regular app it seems
iOS (iPad and iPhone):
Apple TV:
MacOS:
- by Mulot
- dotbeat and dotbeat developer repository
- Dashboard widget from macupdate
- little menu extension which displays a constant readout
- can also use the Yahoo Widgets (available for Windows and and MacOS), see links below in Windows list
Windows:
- Beat-Time
- using Yahoo Widgets - there are multiple widgets available: [1] [2] [3] [4] [5]
- TheBeat - for any systray
- Beware with dual-booting with other OSes that Windows sets the hardware clock in your computer to local time, so if you have it set to UTC in other OS, this will get overwritten and/or produce false time display.
Linux GNOME:
- Note: If you don't see the OFF-ON switch to install the following extensions, see this selution.
- 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/date-menu-formatter@marcinjakubowski.github.com/extension.js - Add import at top:
NOTE: Starting at least GNOME 46.0, there is already an import for GLib at the beginning, then you can leave out the "const GLib" import.
const GLib = imports.gi.GLib; - Right below the GLib import, add the BMT timezone:
let bmttz = GLib.TimeZone.new('+01'); - Append beat time display in
update():setText(Utils.convertFromPattern(this._formatter.format(PATTERN, new Date())) + " @" + this.formatBeatTime()); - If you want to add UTC display as well:
var now = new Date(); var utc = new Date(now.getTime() + now.getTimezoneOffset() * 60000); setText( this._formatter.format(PATTERN, now) + " @" + this.formatBeatTime() + " Z" + this._formatter.format('kk:mm', utc) ); - If you want the ISO 8601 calendar week as well:
...and add function for ISO8601 calendar week from the source at the top in the imports section:
var now = new Date(); var utc = new Date(now.getTime() + now.getTimezoneOffset() * 60000); setText( this._formatter.format(PATTERN, now) + " @" + this.formatBeatTime() + " Z" + this._formatter.format('kk:mm', utc) + " W" + now.getWeekNumber() );Date.prototype.getWeekNumber = function(){ var d = new Date(Date.UTC(this.getFullYear(), this.getMonth(), this.getDate())); var dayNum = d.getUTCDay() || 7; d.setUTCDate(d.getUTCDate() + 4 - dayNum); var yearStart = new Date(Date.UTC(d.getUTCFullYear(),0,1)); return Math.ceil((((d - yearStart) / 86400000) + 1)/7) }; - In any case, add the beat time function below the
update()function: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:
If it does not work, check the standard output, it should show "DateMenuFormatter: error-message-here". You can search for Extensions in the nested GNOME, then it should show an "X" beside the date-formatter extension and show the exact error message. Please file an issue here on this repository in that case.
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). For Wayland, you have to logout and login again.
- internet-time-applet by themactep - from 2013, probably only for older GNOME as newer GNOME uses Javascript for its applets.
- mod for native clock-applet from 2009 probably also only for older GNOME
Linux KDE:
- Suggestion to use conky desktop widgets (link) but not sure if there is a ready-made clock showing .beats
- The Modern Clock widget seems popular, and it looks very promising to modify the source code:
- adding "UTC" time in addition to "Local" should be possible
- then add calculation and display in main.qml here
- TODO add copy-paste version for easy use
Linux Wayland via Waybar (applies to all distributions):
DWM window manager for Linux, BSD etc.:
- Slack Bot und slash command - Written in Rust.
- Discord on on GitHub using a Bot
- emacs
- TODO Thunderbird
- TODO Outlook
- Google Sheets:
- Set the timezone of the Sheet to UTC = "GMT +0 (no daylight savings time" in File - Properties. (As of 2024-12, there is no function to get
NOW()time in a specific time zone; all times are based on the time zone set in the sheet properties.) - In A1, add
=NOW() - Somewhere else, enter
=MOD( ( HOUR(A1) * 3600 + MINUTE(A1) * 60 + SECOND(A1) + 3600) / 86.4, 1000) - If your language or region setting uses comma as decimal separator, the formula is
=MOD( ( HOUR(A1) * 3600 + MINUTE(A1) * 60 + SECOND(A1) + 3600) / 86,4; 1000) - This formula automatically adds +1 one for the UTC+1 basis of Swatch Internet Time.
- Set the timezone of the Sheet to UTC = "GMT +0 (no daylight savings time" in File - Properties. (As of 2024-12, there is no function to get
- Chrome extension by Captain from Agora Road (see Discussion section)
Project listings:
- GitHub topic swatch-internet-time
- GitHub topic internet-time
- Gitlab and Sourcehut provided 0 results as of 2024-01
C:
- beats by j0hax - Also with links to other C implementations.
- by llillilll from Agora Road (see Discussion section) - usable for status bar
- by ShrapnelNet from Agora Road (see Discussion section)
- by ColdFusion8100 resp. Captain from Agora Road (see Discussion section)
- TODO coreutils formatter %@ ? date tool? glibc? -- date(1) uses
fprintftime()and this again usesstrftime()from glibc.
C#:
Elixir:
Emacs Elisp:
Go:
GoDotScript:
Java:
- Swatch-Internet-Time
- inet-time - compatible with
java.timeAPI
JavaScript:
- beats by azappa
- by waffle on Agora Road (see Discussion section)
- by Punp on Agora Road (see Discussion section
- by the mactep
Kotlin and Android:
Perl:
- DateTime::Complete - With module IBeat.
- DateTime::Format::Builder::Parsers::Quick - For parsing.
PHP:
- in standard library - using the DateTime format "B"
Python:
- code snippet
- SwatchTime by Henry Malinowski
- AmigaOS 1.x Workbench clock in PyGame
- toys by 153
- by Fauxx from Agora Road (see Discussion section)
Rust:
- on GitHub
- beats crate
- gil_beats by Gil Desmarais
- algorithm is unefficient
- daph/beats
Shell script:
- The script is so trivial, I show it here directly:
$ printf "@$(( ( ( ( $(date "+%s") + 3600 ) % 86400 ) * 10 ) / 864 ))\n"Tcl:
- beat.tcl is a Tcl module, command-line utility, and GUI clock
TypeScript and React:
- dot-beat-time
- use-beat-time - For React apps.
- internet-time by JaviToro
- Get time
noweither 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+1to 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?
Interval of calculation:
- The correct interval is every full beat or every 0.1 or 0.01 beats, depending on the displayed accuracy. This is slightly faster than 1 second update intervals, but not always possible to realize.
- Calculating the precise beat time, but updating the display every second or every minute. This is often the easy method when doing modifications of existing clock apps or system clock displays. When re-calculating every second, the beat value display will have numeric gaps and jump over a digit in the 0.01 precision = 2nd sub-decimal digit about every 8 to 9 seconds.
- Discussion on c2wiki
- Fifth World wiki - what is a Fifth World country
- on TimeAndDate
- by Sandra - original at gemini://idiomdrottning.org/beat-time
- Agora Road Forum - with some implementations and links to various implementations (last update into this list on 2025-01-05, Captain API and ShrapnetNet API links were broken)
- Hackerspaces.org Wiki (last update into this list on 2025-01-05)
- "The Rise and Fall of Internet Time" (2005)
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.
- "So You Want To Abolish Time Zones" (2015). Not directly about Swatch Internet Time, but relevant criticism.
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 2017 (via Web Archive)
- 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.
- beatTAI (fork of the deleted original) - instead of UTC+1 ("BMT"), uses International Atomic Time (TAI) which is UTC but monotonic, meaning without any added leap seconds. Format is ":xxx.xx" so just ":" instead of "@", which should combine nicely with ISO 8601 date format like so, "YYYY-MM-DD:xxx.xx". Has implementations in some programming languages and method of calculation for easy reference. Even though the TAI atomic time is the basis of UTC and available at the level of NTP, it is not as easily available in programming languages, compared to UTC.
- Decimal Unix time - Unix time, but with 100 000 seconds per day.