使用PHP,我希望将UNIX时间戳转换为类似于以下内容的日期字符串:2008-07-17 t9:24:17 z

如何将时间戳(如1333699439)转换为2008-07-17 t9:24:17 z ?


当前回答

你可以像.....

$originalDate = "1585876500";

echo $newDate = date("Y-m-d h:i:sa", date($originalDate));

其他回答

<?php
$timestamp=1486830234542;
echo date('Y-m-d H:i:s', $timestamp/1000);
?>

设置默认时区以获得正确的结果是非常重要的

<?php
// set default timezone
date_default_timezone_set('Europe/Berlin');

// timestamp
$timestamp = 1307595105;

// output
echo date('d M Y H:i:s Z',$timestamp);
echo date('c',$timestamp);
?> 

在线转换帮助:http://freeonlinetools24.com/timestamp

大多数人不读评论,gmdate()在接受的答案中有问题,它以GMT返回时间,所以如果我们使用date_default_timezone_set(zone)它将不起作用,而是使用date()。

<?php

$ts = 1664706166;
$date = date('Y-m-d H:i:s', $ts);
$gmdate = gmdate('Y-m-d H:i:s', $ts);
echo  "date()  : $date\n";
echo  "gmdate(): $gmdate\n\n";

date_default_timezone_set("Asia/Jakarta");
$date = date('Y-m-d H:i:s', $ts);
$gmdate = gmdate('Y-m-d H:i:s', $ts);
echo  "date()  : $date\n";
echo  "gmdate(): $gmdate <- GMT\n";

/* result
date()  : 2022-10-02 10:22:46
gmdate(): 2022-10-02 10:22:46

After set timezone
date()  : 2022-10-02 17:22:46
gmdate(): 2022-10-02 10:22:46 <- GMT
*/

DateTime类在构造函数中接受一个字符串。如果你用@-字符作为时间戳的前缀,你创建了一个带有时间戳的DateTime对象。格式化使用'c'格式…预定义的ISO 8601复合格式。

如果可以像这样使用DateTime类…设置正确的时区,如果需要UTC时间,则不设置。

$dt = new DateTime('@1333699439');
$dt->setTimezone(new DateTimeZone('America/New_York'));
echo $dt->format('c');

https://www.php.net/manual/en/book.datetime.php https://www.php.net/manual/en/datetime.format.php 更多示例和时区https://time.einfach.jetzt/?t=1333699439

$unixtime_to_date = date('jS F Y h:i:s A (T)', $unixtime);

这应该会起作用。