Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php DateTime类,如果未显示正确的数据_Php_Datetime - Fatal编程技术网

Php DateTime类,如果未显示正确的数据

Php DateTime类,如果未显示正确的数据,php,datetime,Php,Datetime,我第一次使用DateTime类在不同时区之间进行转换 这是我的 $USER_TIME_ZONE = new DateTimeZone('America/Los_Angeles'); $UTC = new DateTimeZone('UTC'); $schedule_date = new DateTime($call['triggerOn'], $USER_TIME_ZONE); echo $schedule_date->format('m/d/Y h:i A'); $schedule_d

我第一次使用DateTime类在不同时区之间进行转换

这是我的

$USER_TIME_ZONE = new DateTimeZone('America/Los_Angeles');
$UTC = new DateTimeZone('UTC');
$schedule_date = new DateTime($call['triggerOn'], $USER_TIME_ZONE);
echo $schedule_date->format('m/d/Y h:i A');

$schedule_date = new DateTime($call['triggerOn'], $UTC);
echo $schedule_date->format('m/d/Y h:i A');
下面是我如何处理我的结果并试图转换它们

foreach ( $activities AS $call){ 
    $USER_TIME_ZONE = new DateTimeZone('America/Los_Angeles');
    $UTC = new DateTimeZone('UTC');
    $schedule_date = new DateTime($call['triggerOn'], $UTC);
    echo $schedule_date->format('m/d/Y h:i A');
 }
以下是$call['triggerOn']的值

2013-02-27 18:00:37
2013-02-02 01:11:07
2013-01-10 17:12:14
2013-02-27 22:29:42
2013-02-27 22:28:38
2013-02-25 21:53:12
2013-02-14 14:35:48
2012-12-13 14:03:16
2013-03-04 19:04:20
2013-03-01 18:52:48
2013-03-05 15:46:56
2013-03-11 15:26:17
2013-02-07 18:17:30
2013-03-05 18:04:25
我的两个输出都是一样的!我不明白为什么。在Windows server 2008 R2上运行PHP时,是否需要在服务器端进行配置。
感谢您的帮助和时间。

了解$call['triggerOn']的价值会有所帮助,但这是否有效:

$USER_TIME_ZONE = 'America/Los_Angeles';
$UTC = 'UTC';
$schedule_date = new DateTime( $call['triggerOn'], $USER_TIME_ZONE );
echo $schedule_date->format( 'm/d/Y h:i A' );

$schedule_date = new DateTime( $call['triggerOn'], $UTC );
echo $schedule_date->format( 'm/d/Y h:i A' );

基本上,与其创建新的DateTime对象用作其他新DateTime对象的参数,不如改用时区字符串?这行得通吗?

知道$call['triggerOn']的值会有帮助,但这行得通吗:

$USER_TIME_ZONE = 'America/Los_Angeles';
$UTC = 'UTC';
$schedule_date = new DateTime( $call['triggerOn'], $USER_TIME_ZONE );
echo $schedule_date->format( 'm/d/Y h:i A' );

$schedule_date = new DateTime( $call['triggerOn'], $UTC );
echo $schedule_date->format( 'm/d/Y h:i A' );
基本上,与其创建新的DateTime对象用作其他新DateTime对象的参数,不如改用时区字符串?这行吗?

DateTime::format()方法返回创建数据所在时区的时间。没有转换。因此,无论传入哪个时区,输出时间都将与输入时间相同。您可以通过在format参数中添加“e”来验证这一点。您将看到,在第一种情况下,时区是America/Los_Angeles,在第二种情况下,时区是UTC

你可能想在时区之间转换时间,对吧?为此,只需在一个时区中创建一个新的DateTime对象,用第二个时区调用setTimezone方法,然后格式化结果

所有这些都假设$call['triggerOn']值既不是时间戳,也不是标识了时区的值。在这种情况下,将忽略DateTime构造函数的第二个参数。

DateTime::format()方法将返回创建数据所在时区的时间。没有转换。因此,无论传入哪个时区,输出时间都将与输入时间相同。您可以通过在format参数中添加“e”来验证这一点。您将看到,在第一种情况下,时区是America/Los_Angeles,在第二种情况下,时区是UTC

你可能想在时区之间转换时间,对吧?为此,只需在一个时区中创建一个新的DateTime对象,用第二个时区调用setTimezone方法,然后格式化结果


所有这些都假设$call['triggerOn']值既不是时间戳,也不是标识了时区的值。在这种情况下,DateTime构造函数的第二个参数被忽略。

调用$call['triggerOn']的值是多少?您的错误不能在我为$call['triggerOn']添加值时再次检查帖子吗['triggerOn']请再次检查帖子,因为我为$call添加了值['triggerOn']以字符串形式传递时区不起作用,因为我们需要传递对象。请在我为$call['triggerOn'添加值时再次检查帖子以字符串形式传递时区不起作用,因为我们需要传递对象。请在我为$call['triggerOn'添加值时再次查看帖子。是的,我正在尝试在时区之间进行一些转换,因为我将数据库中的dattime字段存储为UTC,因此我正在尝试将存储的UTC datetime转换为当前用户的时区。我有一个foreach循环来处理结果,并将其从UTC转换为当前用户时区。此外,我还将我进行转换的循环添加到我的帖子中。P当我为$call['triggerOn'添加值时,请再次检查帖子。是的,我正在尝试在时区之间进行一些转换,因为我将数据库中的dattime字段存储为UTC,因此我正在尝试将存储的UTC datetime转换为当前用户的时区。我有一个foreach循环,用于遍历结果并将其从UTC转换为当前用户时区。此外,我在帖子中添加了我进行转换的循环。