Skip to content

ERnsTL/awesome-internettime

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

109 Commits
 
 
 
 
 
 

Repository files navigation

Awesome Swatch Internet Time (.Beats) Awesome

A curated list of awesome Swatch Internet Time libraries, software and resources.

Contributions like pull requests, issues and discussion are welcome :-)

Contents

Official, Basic Info

Web Clocks and Converters

Userscript for patching into your webbrowser:

Community

Physical Clocks and Watches

The Original Swatch Net Time Watches:

  • Swatch does not sell them any more.
  • search for Swatch Originals .Beat Net Time SQN101

Physical clocks:

Smart Watches

Apple Watch:

Android und Galaxy Watch:

Others:

Mobile

Android:

iOS (iPad and iPhone):

Television

Apple TV:

Operating Systems

MacOS:

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:
      const GLib = imports.gi.GLib;
      
      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.
    • 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:
      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()
      );
      
      ...and add function for ISO8601 calendar week from the source at the top in the imports section:
      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:
      dbus-run-session -- gnome-shell --nested --wayland
      
      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.
    • 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:

Linux Wayland via Waybar (applies to all distributions):

DWM window manager for Linux, BSD etc.:

Applications

  • 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.
  • Chrome extension by Captain from Agora Road (see Discussion section)

Programming Languages, Libraries

Project listings:

C:

C#:

Elixir:

Emacs Elisp:

Go:

GoDotScript:

Java:

JavaScript:

Kotlin and Android:

Perl:

PHP:

Python:

Rust:

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:

Method of Calculation

  • 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?

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.

Discussions

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:
    1. Favoring the local day/night and roughly following the biological cycle but having to calculate for worldwide coordination or
    2. 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.

News Articles

Related

  • 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.

About

List of Awesome Swatch Internet Time Tools

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors