猿问

php中的时区转换

php中的时区转换

有人能建议一种简单的方法将日期和时间转换为php中的不同时区吗?



一只斗牛犬
浏览 1156回答 3
3回答

慕妹3146593

可以为此使用datetime对象或它们的函数别名:例(PHP手册节录)date_default_timezone_set('Europe/London');$datetime = new DateTime('2008-08-03 12:35:23');echo $datetime->format('Y-m-d H:i:s')  . "\n";$la_time = new DateTimeZone('America/Los_Angeles');$datetime->setTimezone($la_time);echo $datetime->format('Y-m-d H:i:s');编辑有关评论但是我不能使用这种方法,因为我需要在不同的时区显示日期作为用户从不同位置登录。这不是问题。当用户登录时,您将确定他的时区,并将其设置为您的datetime对象,如所示。我在我的一个项目中使用了类似的方法,它就像一种魅力。在数据库中,我需要获取任何一个时区中的日期,然后只有它才能被正确地处理。您可以将时间作为时间戳或日期时间存储在一个时区中。查询日期时间字段时,可以将datetime对象中的时间转换为此时区,或者(如果db支持的话)使用选定的时区进行查询。

狐的传说

一个更简单的方法如下所示:date_default_timezone_set('Europe/London');  // your user's timezone$my_datetime='2013-10-23 15:47:10';echo date('Y-m-d H:i:s',strtotime("$my_datetime UTC"));如所述在PHP手册中,strtotime()也接受时区,只需将其附加到日期时间。我建议您将所有的约会时间存储在UTC,因为这样您就不会有夏时制问题。

杨魅力

这对我很管用,而且也很干净!function convert_to_user_date($date, $format = 'n/j/Y g:i A', $userTimeZone = 'America/Los_Angeles', $serverTimeZone = 'UTC'){     try {         $dateTime = new DateTime ($date, new DateTimeZone($serverTimeZone));         $dateTime->setTimezone(new DateTimeZone($userTimeZone));         return $dateTime->format($format);     } catch (Exception $e) {         return '';     }}function convert_to_server_date($date, $format = 'n/j/Y g:i A', $userTimeZone = 'America/Los_Angeles', $serverTimeZone = 'UTC'){     try {         $dateTime = new DateTime ($date, new DateTimeZone($userTimeZone));         $dateTime->setTimezone(new DateTimeZone($serverTimeZone));         return $dateTime->format($format);     } catch (Exception $e) {         return '';     }}//example usage$serverDate = $userDate = '2014-09-04 22:37:22';echo convert_to_user_date($serverDate);     echo convert_to_server_date($userDate);
随时随地看视频慕课网APP
我要回答