Become a Patron!

My Amazon wishlist can be found here.

Life Line

PHP lags 23 seconds

Bug report # 35958 must have the most obscure one ever:

"strftime usually returns a string from the number of seconds since 1 jan 1970. Now, it lags and returns a string representing 23 seconds too late."

If you know what's going on though, it isn't really that weird. Every once in a while the IERS announces a new leap second to "keep the broadcast standards for time of day close to mean solar time ". At the moment the difference is 23 seconds which is reflected in comparing the leap second adjusted time zone information file with the non-adjusted one. You can see the leap second with this little shell script:

export TZ=Europe/Amsterdam
date --date "@1136073621"
date --date "@1136073622"
date --date "@1136073623"
export TZ=right/Europe/Amsterdam
date --date "@1136073621"
date --date "@1136073622"
date --date "@1136073623"

The output is:

Sun Jan  1 01:00:21 CET 2006
Sun Jan  1 01:00:22 CET 2006
Sun Jan  1 01:00:23 CET 2006
Sun Jan  1 00:59:59 CET 2006
Sun Jan  1 00:59:60 CET 2006
Sun Jan  1 01:00:00 CET 2006

The output with the "right/Europe/Amsterdam" timezone is actually the correct time, but this will obviously confused too many computer programs. Most often you will not see this one in use.

The new date/time code in PHP 5.1 does not support the leap second either. I was playing with it while developing, but thought it to be to confusing. Seems I was right there :)


This article has a short URL available:


No comments yet

Add Comment


Will not be posted. Please leave empty instead of filling in garbage though!

Please follow the reStructured Text format. Do not use the comment form to report issues in software, use the relevant issue tracker. I will not answer them here.

All comments are moderated