如何将历元时间戳转换为UTC格式,如PHP中的2014-06-25T14:38:52.359Z

如何将历元时间戳转换为UTC格式,如PHP中的2014-06-25T14:38:52.359Z,php,datetime,date-format,utc,epoch,Php,Datetime,Date Format,Utc,Epoch,我希望将历元时间戳(如1372190184)转换为格式2014-06-25T14:38:52.359Z 我已经尝试了以下代码,但是我得到的格式与我需要的不同 $start = new DateTime(date('r', '1372190184')); $startDateText = $start->format('Y-m-dTH:i:sZ'); var_dump($startDateText); exit(); 但是我得到的输出是字符串(30)“2013-06-25GMT+02002

我希望将历元时间戳(如1372190184)转换为格式2014-06-25T14:38:52.359Z

我已经尝试了以下代码,但是我得到的格式与我需要的不同

$start = new DateTime(date('r', '1372190184'));
$startDateText = $start->format('Y-m-dTH:i:sZ');
var_dump($startDateText);
exit();

但是我得到的输出是字符串(30)“2013-06-25GMT+020021:56:247200”,这与我预期的不同

您忘记了格式中的反斜杠,以及转储中startDateText之前的美元符号:

$start = new DateTime(date('r', '1372190184'));
$startDateText = $start->format('Y-m-d\TH:i:s\Z');
var_dump($startDateText);

此外,如果您要查找微秒,请添加
u
格式字符。

您应该将日期\u默认值\u时区\u设置设置为所需输出的UTC。格式如你所愿。并确保转义格式中的特殊字符

date_default_timezone_set('UTC');
$epoch = 1340000000;
echo gmdate('r', $epoch);

您不会得到任何毫秒数,因为这些毫秒数不在Unix时间戳值的秒分辨率内,因此您可能希望用零来填充这些毫秒数。如果你想要一个文字T和Z,而不是用实际的时区名称和偏移量来代替它们,那么就把它们转义…谢谢你。这很有帮助。我使用下面的代码得到了我期望的格式$开始=新的日期时间(日期('r','1372190184')$startDateText=$start->format('Y-m-d\TH:i:s.000\Z');变量转储($startDateText);退出();