This is an old revision of the document!


Swatch Internet Time / .beat Time

<fs xx-large> @000 <script defer src=“https://melonking.net/scripts/swatchTime.js”></script> </code> JavaScript - Full Code <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 = 1)

1)
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));
  }
} </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-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)


@000 MelonLand Editor Recent Edits Tenement Arcade Want to Login or Join ? Forum Art Hub Chat Webring Web Guides Graphics Catalogue Wiki Newsletters Image Stream
Melon's Sites TamaNotchi Textures PixelSea GifyPet MoMG Ozwomp Online Loom Videos Leaky Webring Melonking
Tools Melon Software ArtHub Embed Maker ML Passports
Outlinks Frutiger Aero Forum Onio Club m15o's Web Services 32Bit Cafe iMood Webrings Internet Phone Book HTML Energy Declarations Hackers & Designers
Zap! Minecraft: Online
Join: craft.melonking.net