Skip to content

ERnsTL/awesome-internettime

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 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

Mobile

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:

  • 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 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():
      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(
          Utils.convertFromPattern(this._formatter.format(PATTERN, now)) + 
          "  @" + this.formatBeatTime() + 
          "  Z" + Utils.convertFromPattern(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(
          Utils.convertFromPattern(this._formatter.format(PATTERN, now)) + 
          "  @" + this.formatBeatTime() + 
          "  Z" + Utils.convertFromPattern(this._formatter.format('kk:mm', utc)) + 
          "  W" + now.getWeekNumber()
      );
      
      ...and add function for ISO8601 calendar week at the top from the source
    • 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).
  • 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:

Rust:

Go:

C:

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:

C#:

Elixir:

Typescript:

Java:

Kotlin and Android:

Perl:

Emacs Elisp:

GoDotScript:

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.

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

About

List of Awesome Swatch Internet Time Tools

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •