我是php新手。我想编写一个函数,我需要用户以任何日期格式(包括DST)将日期输入到GMT格式,然后再返回到原始输入的格式。请任何机构帮助我。
尽管gmdate函数可用。如果您使用的是PHP 5.2或更高版本,请考虑使用DateTime对象。
这是切换到GMT的代码
$date = new DateTime(); $date->setTimezone(new DateTimeZone('GMT'));
然后返回默认时区…
$date = new DateTime('2011-01-01', new DateTimeZone('GMT')); $date->setTimezone(new DateTimeZone(date_default_timezone_get()));
使用DateTime对象可以像创建过程函数一样创建日期时间,只是保留对实例的引用。
例如
// Get a reference to Christmas of 2011, at lunch time. $date = new DateTime('2011-12-25 13:00:00'); // Print the date for people to see, in whatever format we specify. echo $date->format('D jS M y'); // Change the timezone to GMT. $date->setTimezone(new DateTimeZone('GMT')); // Now print the date/time it would in the GMT timezone // as opposed to the default timezone it was created with. echo $date->format('Y-m-d H:i:s'); // Just to show of some more, get the previous Sunday $date->modify('previous Sunday');
您可以使用很多功能,这些功能比过程功能更具可读性。
从时区转换为GMT的明确示例
$melbourne = new DateTimeZone('Australia/Melbourne'); $gmt = new DateTimeZone('GMT'); $date = new DateTime('2011-12-25 00:00:00', $melbourne); $date->setTimezone($gmt); echo $date->format('Y-m-d H:i:s'); // Output: 2011-12-24 13:00:00 // At midnight on Christmas eve in Melbourne it will be 1pm on Christmas Eve GMT. echo '<br/>'; // Convert it back to Australia/Melbourne $date->setTimezone($melbourne); echo $date->format('Y-m-d H:i:s');
使用您的亚洲/加尔各答前往美国/纽约
date_default_timezone_set('Asia/Kolkata'); $date = new DateTime('2011-03-28 13:00:00'); $date->setTimezone(new DateTimeZone('America/New_York')); echo $date->format("Y-m-d H:i:s"); //Outputs: 2011-03-28 03:30:00