Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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
如何将utc转换为php中的本地时间?_Php - Fatal编程技术网

如何将utc转换为php中的本地时间?

如何将utc转换为php中的本地时间?,php,Php,1532131481886863 我尝试了下面的代码,但不起作用。它给了我错误的日期,我想这与数字量有关 $epoch = 1532131481886863; $dt = new DateTime("@$epoch"); // convert UNIX timestamp to PHP DateTime echo $dt->format('Y-m-d H:i:s'); 我能想到的唯一一件事是最后六位数是微秒。 因此,拆分数字将为您提供正确的日期和时间 echo date("Y-m-d

1532131481886863

我尝试了下面的代码,但不起作用。它给了我错误的日期,我想这与数字量有关

$epoch = 1532131481886863;
$dt = new DateTime("@$epoch");  // convert UNIX timestamp to PHP DateTime
echo $dt->format('Y-m-d H:i:s');

我能想到的唯一一件事是最后六位数是微秒。 因此,拆分数字将为您提供正确的日期和时间

echo date("Y-m-d H:i:s", substr($epoch, 0,-6)); 
// Optionally you can echo the microseconds also.  
echo " " . substr($epoch, -6);

什么都不管用不是问题,这只是个轶事。你试过什么?显示您尝试过的代码,结果是什么,以及为什么您认为不应该是这样。您的代码做什么?它应该做什么呢?当地时间是几点?echo PHP_INT_MAX;给你?嗨,请解释一下你的密码。它将使您的答案质量更好,并有助于PHP新手。@Nic3500已添加解释:我不会用数学来获得秒数。您正在创建一个浮点值,然后对其进行int转换。我们都知道编程语言处理基数为10的浮点运算有多好。你觉得这样做有什么好处?@Andreas我完全同意,我的意图是提供一个对原始代码进行最小更改的示例,而不是重写它-substr也可以完成这项工作,但已经有了一个解决方案
<?php

// Divide by 1000*1000 because given number is epoch with microseconds
// but the DateTime expects time in seconds
// By dividing we will get 1532131481.886863
// We dont need the microseconds so we cast (int) on it to get 1532131481

$epoch = (int)((1532131481886863 /1000) /1000);
$dt = new DateTime("@$epoch");  // convert UNIX timestamp to PHP DateTime
echo $dt->format('Y-m-d H:i:s');