Can anyone suggest an easy method to convert date and time to different timezones in php?
None of these answers worked for me (I skipped trying code that was overly bulky in size). I also think it's weird to change the default timezone just for a single conversion.
Here is my solution:
function changeTimeZone($dateString, $timeZoneSource = null, $timeZoneTarget = null)
{
if (empty($timeZoneSource)) {
$timeZoneSource = date_default_timezone_get();
}
if (empty($timeZoneTarget)) {
$timeZoneTarget = date_default_timezone_get();
}
$dt = new DateTime($dateString, new DateTimeZone($timeZoneSource));
$dt->setTimezone(new DateTimeZone($timeZoneTarget));
return $dt->format("Y-m-d H:i:s");
}
So, to convert to the server default, you would just pass one timezone:
changeTimeZone("2016-10-24 16:28", "Asia/Tokyo");
To convert from the server default to the user, you would leave the 2nd parameter null or blank:
changeTimeZone("2016-10-24 16:28", "", "Asia/Tokyo");
And to switch between 2 timezones unrelated to the default, you would provide 2 timezones:
changeTimeZone("2016-10-24 16:28", "America/New_York", "Asia/Tokyo");