// 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)); }} </code> 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.
<span id="mySwatchClock"></span> <script> var mySwatchClock = document.getElementById('mySwatchClock'); function updateSwatchClock() { mySwatchClock.innerHTML = '@' + GetSwatchTime(); } setInterval(updateSwatchClock, 864); </script>==== PHP: ==== PHP has native support for Swatch time, you can get the latest beat using this snippet:
$swatchTime = date('B'); //000-999However 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 @$BTIMEHowever, 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 EOFTo 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)