This review has been pending for a while, but recently I finished reading Derick Rethans’ book: Date and Time Programming. A first look at the topic (Date and Time) might get you thinking, “Why the hell do I need a book to teach me about time?” But further investigating, and some life experience will show you that dealing with Date and Time is not always as straightforward as “Its twelve o’clock”. Derick’s book gives you an in depth look into handling various factors of date and time such as timezones and days that did not exist, as well as finally delivering something missing from php.net: documentation of the DateTime Object.
The book covers a lot of ground, even tough it looks rather thin. Derick does a wonderful job of introducing date/time matter in the opening chapter, covering all the calendar switches (Julian to Gregorian) and its complexities (did you know Feb 30th has already happened once?) as well as timezones, solar times and daylight-saving details. This is all very valuable information for anyone working with dates.
The progressing chapters dwell into the various operations we use with and around date and time, like parsing, representing, manipulating and bringing attention to various perks of timezone and daylight saving handling in all the various functions in PHP. Its also very interesting that the book fully covers and makes crystal clear the new features in PHP 5.3 to deal with this topic.
The book also dewlls into PHP internals and describes how to use timezones and to update the internal timezone database, as well as how to deal with database engines and still get back correctly timezoned dates.
The book is a really pleasant read in a very orderly fashion, Derick covers all steps before introducing new issues instead of just throwing them out and explaining afterwards. It also functions very well as reference book, since documentation on this topic is not all it should be on the PHP Manual. This is a *must-read* book for anyone that has ever had to deal with handling date or time in a PHP system, or anyone who plans on launching systems that are aware of timezone differences.