Can';无法使php DateTime时区转换工作。它没有';当我改变时区时,我不会改变时间
我在任何地方都见过这种方法,我寻找php时区转换,但我无法让它工作。我想从默认的mysql格式中获取一个时间戳,并将其转换为$timeformat格式的UTC时间Can';无法使php DateTime时区转换工作。它没有';当我改变时区时,我不会改变时间,php,datetime,timezone,Php,Datetime,Timezone,我在任何地方都见过这种方法,我寻找php时区转换,但我无法让它工作。我想从默认的mysql格式中获取一个时间戳,并将其转换为$timeformat格式的UTC时间 function utcconvert($time){ $timeformat="M j, Y g:i:s a"; $localtime = new DateTime($time, new DateTimeZone('America/New_York')); $utctime = $localtime; $utctime-&g
function utcconvert($time){
$timeformat="M j, Y g:i:s a";
$localtime = new DateTime($time, new DateTimeZone('America/New_York'));
$utctime = $localtime;
$utctime->setTimeZone(new DateTimeZone('UTC'));
return date($timeformat, $utctime->format("U"));
}
屈服
echo utcconvert("2013-07-05 16:23:29");
同样的时间,转换成这种格式。我有date\u default\u timezone\u set(“美国/纽约”)代码>设置
如何解决此问题以将服务器时间(纽约)转换为UTC时间?如果要将字符串作为第二个参数传递给,则应传递int(UNIX时间戳)
尝试:
编辑:
事实上,你可以用
return date($timeformat, $utctime->getTimeStamp());
问题是,你总是返回一个新的日期,因为你提供了一个糟糕的论点。您应该检查php.ini和display_errors
和error_reporting
,这样您就可以看到当php警告您这件事时,您将字符串作为第二个参数传递给,您应该传递一个int(UNIX时间戳)
尝试:
编辑:
事实上,你可以用
return date($timeformat, $utctime->getTimeStamp());
问题是,你总是返回一个新的日期,因为你提供了一个糟糕的论点。您应该检查php.ini和显示错误
和错误报告
,这样您就可以看到php何时警告您这件事当您使用$utctime->format(“U”)
从DateTime
对象生成unix时间戳时,您将丢失任何时区信息,它只会返回一个整数(unix stimestamp,但出于某种原因,它是一个字符串)和php将使用当前默认时区对其进行威胁
只需对日期格式字符串使用format()
方法即可:
return $utctime->format("U");
,其背后的原因是,DateTime
对象在更改时区时不会更改内部时间戳值。当您使用$utctime->format(“U”)
从DateTime
对象生成unix时间戳时,您将丢失任何时区信息,它只会返回一个整数(unix stimestamp,但出于某种原因,它是一个字符串)和php将使用当前默认时区对其进行威胁
只需对日期格式字符串使用format()
方法即可:
return $utctime->format("U");
,其背后的原因是DateTime
对象在更改时区时不会更改内部时间戳值