I wrote a custom date handler that managed to successfully perform a roundtrip to MySql and back. For a unit test, I started with time() and added about three hours for each itteration. (This cycled through dates round the whole year, there were 2000 itterations) My date wrapper would hold, as a private member, a UNIX timestamp. It had functions to get this out as a local time or a GMT time. For each itteration, I called the local time fuction, storing the result, called the GMT time function, storing the result. I then created a new instance of the wrapper and told it to parse the GMT string (effectively what would come out of MySql) and then compared the local time string to that of the original. All 2000 itterations succeeded. I converted my UNIX timestamp to a MySql GMT format with: $dateString = gmdate("Y-m-d H:i:s", $this->_dateTime); I converted back with: strtotime($dateString . " GMT") The local time string values I checked came out of: date(DATE_W3C, $this->_dateTime); My unit test worked and, because I was storing it in the database as a DATETIME value, the round trip to MySql worked. When I printed the local time strings to the screen, to check that my itteration had actually tested the whole year round, I noticed an interesting anomaly: for some of the year it said that the two matching dates where in GMT +3, not +2. My location does not use DST, so I was very confused - resulting in this thread. Could this be a configuration issue in my PHP config file? Are my methods close enough to best practices to be reliable in a mission critical application? Any suggestions on how I would convert $this->_dateTime (the private member that I use to store my unix timestamp) to a string that represents that time in any timezone? (Assume that I know the timezone from a setting in the user's profile) I always assumed that I would have to store two settings in the user's profile: their timezone and whether times should be automatically adjusted for DST. I assumed that it is impossible to reliably determine the timezone from which an HTTP request originated.