====== Swatch Internet Time / .beat Time ======
#beatTime#
===== How does it work? =====
It divides the day into 1000 “**beats**”. Instead of using hours, minutes, and seconds to represent time, Swatch Internet Time uses a single decimal number ranging from 000 to 999. Each beat is equivalent to 1 minute and 26.4 seconds. Sometimes you'll also see some extra numbers like ".56", those are microbeats/centibeats and are similar to seconds.
Swatch time is usually preceded by an **@** symbol; this helps you know it's swatch time and not some random number! For example **@123** or **@542.69**
000 in Swatch time is the same as Midnight UTC+1; but because swatch time does not use timezones, midnight will be different for everyone. The goal of swatch time is not to provide the relative time you can use in your daily life; it's for worldwide events that all need to happen at the same time!
==== Useful Conversions ====
Below are some helpful conversions you can use to contextualise beat time and understand how to think about it!
=== Recommended reference beat times: ===
* **1.beat** - AFK I'll be back in a moment!
* **5.beats** - The time it takes to make a coffee
* **15.beats** - a quick lunch break
* **30.beats** - An average TV show episode without ads
* **100.beats** - A long movie!
* **200.beats** - The whole afternoon!
* **350.beats** - The time you'd spend at a full-time job and/or a good night's sleep!
=== Beats to common time frames: ===
* **4.beats** = 5 minutes
* **11.beats** = 15 minutes
* **42.beats** = 1 hour
* **126.beats** = 3 hours
* **1000.beats** = 24 hours
===== How can I use swatch time in my life? =====
Easy; just use swatch time when you are planning your events or meetups and get your friends to do the same! There are even some apps that can help you!
**Swatch Time Apps for various platforms:**
* All Apple devices, including Apple Watch - [[https://beattime.mulot.org/|BeatTime]]
* Android Phones - [[https://f-droid.org/en/packages/eu.mirkodi.swatchbeatclock/index.html|Swatch .beat clock]]
* Pebble Smart Watches - [[https://apps.rebble.io/en_US/search/watchfaces/1?native=false&query=beat|See Beat apps]]
* macOS Menubar - [[https://github.com/amiantos/dotbeat|dotbeat]]
* GNOME Extension - [[https://extensions.gnome.org/extension/5946/swatch-clock/|Swatch Clock]]
* Cinnamon Applet - [[https://cinnamon-spices.linuxmint.com/applets/view/310|Internet Time]]
* Win 95/XP - [[https://web.archive.org/web/20081224143907/http://www.artefakt.com/projects/ibeat/|iBeat]]
===== Other useful links! =====
* Swatch time [[https://forum.melonland.net/index.php?topic=1202.0|discussion thread]] on our forum!
* The Swatch [[https://www.swatch.com/en-en/internet-time.html|intro video from 1998]]
* Swatch Time History on [[https://en.wikipedia.org/wiki/Swatch_Internet_Time|Wikipedia]]
* Decimal Time on Wikipedia [[https://en.wikipedia.org/wiki/Decimal_time]]
* MelonLand's [[rgbeat|RGBeat]]
----
===== Code Snippets =====
You can also include a swatch clock on your website; here are some premade code snippets you can use!
==== JavaScript: ====
**JavaScript - Easy Option**
Here is a premade JavaScript clock for your website! Just paste this code onto your page wherever you want your clock to be and it will work!
@000
**JavaScript - Full Code**
// Returns the current Swatch beat
function GetSwatchTime(showDecimals = true) {
// get date in UTC/GMT
var date = new Date();
var hours = date.getUTCHours();
var minutes = date.getUTCMinutes();
var seconds = date.getUTCSeconds();
var milliseconds = date.getUTCMilliseconds();
// add hour to get time in Switzerland
hours = hours == 23 ? 0 : hours + 1;
// time in seconds
var timeInMilliseconds = ((hours * 60 + minutes) * 60 + seconds) * 1000 + milliseconds;
// there are 86.4 seconds in a beat
var millisecondsInABeat = 86400;
// calculate beats to two decimal places
if (showDecimals) {
return Math.abs(timeInMilliseconds / millisecondsInABeat).toFixed(2);
} else {
return Math.floor(Math.abs(timeInMilliseconds / millisecondsInABeat));
}
}
If you want it to display on your webpage and auto-update here is an example - first, we make a **span** with an id, this is where the clock will appear on your page - then we get that span in a script, make a function that fills it with the swatch time, and finally, we set it to reload every microbeat.
==== PHP: ====
PHP has native support for Swatch time, you can get the latest beat using this snippet:
$swatchTime = date('B'); //000-999
However if you would like a full function that also shows microbeats, we have that too!
// Returns the current Swatch beat
function GetSwatchTime($showDecimals = true)
{
// Get time in UTC+1 (Do not Change!)
$now = new DateTime("now", new DateTimeZone("UTC"));
$now->add(new DateInterval("PT1H"));
// Calculate the seconds since midnight e.g. time of day in seconds
$midnight = clone $now;
$midnight->setTime(0, 0);
$seconds = $now->getTimestamp() - $midnight->getTimestamp();
// Swatch beats in seconds - DO NOT CHANGE
$swatchBeatInSeconds = 86.4;
// Calculate beats to two decimal places
if ($showDecimals) {
return number_format(round(abs($seconds / $swatchBeatInSeconds), 2), 2);
} else {
return floor(abs($seconds / $swatchBeatInSeconds));
}
}
==== BASH: ====
(note that Etc timezones are inverted)
Calculating Beat Time in bash is simple:
MIDNIGHT=$( TZ='Etc/GMT-1' date -d "12:00 am" +%s )
BTIME=$(( (($EPOCHSECONDS - $midnight) * 1000) / 86400 ))
echo @$BTIME
However, you need to use an external program to calculate centibeats, since bash does not handle decimals well:
(using dc, which is a rpn calculator)
MIDNIGHT=$( TZ='Etc/GMT-1 date -d "12:00 am" +%s )
printf @
dc << EOF
# setting precision
2 k
# subtracting midnight from the current epoch
$EPOCHREALTIME $MIDNIGHT -
# converting to ms
1000 *
# divide by seconds in a day
86400 /
# print it to screen
p
EOF
To display it on your screen permanently, you can use any program that uses piped input, but lemonbar is the easiest to use:
while true
do
MIDNIGHT=$( TZ='Etc/GMT-1' date -d "12:00 am" +%s )
BTIME=$(( (($EPOCHSECONDS - $midnight) * 1000) / 86400 ))
echo @$BTIME
done | lemonbar -bg 48+0+18 # positions a little above the bottom left
(you can replace the code between the do and done with the dc version too)