====== Swatch i.Beats ======
Using ''date('B')'' for the [[http://www.swatch.com/us_en/internettime.html|Swatch Internet Time]] (i.Beats) can still lead to misunderstandings, because the date given in the resulting string is the local date, not the date of the BMT (Biel Mean Time / UTC+0100) after which the i.Beats are counted. So while @000 is equal all around the globe, //October **25th**, 2005 @000// is really //October **24th**, 06:00 PM// in Chicago local time. So if you use ''date('d M Y @B')'' in Chicago on that day at 6pm, it will return "''24 Oct 2005 @000''" although it should be "''25 Oct 2005 @000''".
Therefore it may happen that you miss an appointment by 24 hours (or 1000 Beats). Here's a way to return the Internet Time with correct date:
$curtime = time();
$utcdiff = date('Z', $curtime); // get difference to UTC in seconds
$bmttime = $curtime - $utcdiff + 3600; // BMT = UTC+0100
$ssm = date('H', $bmttime)*3600 + date('i', $bmttime)*60 + date('s', $bmttime); // seconds since midnight (BMT)
$ibeats = $ssm/86.4; // 86400 seconds = 1000 beats, so 1 beat = 86.4 seconds
echo 'i.Beats : ' . date('D, d M Y', $bmttime) . ' @' . $ibeats;
**Note:** If you would try ''date('D, d M Y @B', $bmttime)'', the resulting beats would be wrong because the timezone used for calculation of the beats within the date() function is still your local one but the timestamp is UTC+0100.
Another working way would be:
$curtime = time();
$utcdiff = date('Z', $curtime); // get difference to UTC in seconds
$bmttime = $curtime - $utcdiff + 3600; // BMT = UTC+0100
echo 'i.Beats : ' . date('D, d M Y', $bmttime) . ' @' . date('B', $curtime);
But this way there are no floating-point beats possible, which may be handy sometimes.