将 UNIX 时间戳转换为格式化日期字符串

问题描述 投票:0回答:10

使用 PHP,我想将 UNIX 时间戳转换为与此类似的日期字符串:

2008-07-17T09:24:17Z

如何将

1333699439
等时间戳转换为
2008-07-17T09:24:17Z

php unix-timestamp
10个回答
398
投票

尝试像这样

gmdate

<?php
$timestamp=1333699439;
echo gmdate("Y-m-d\TH:i:s\Z", $timestamp);
?>

146
投票

使用日期功能

date ( string $format [, int $timestamp = time() ] )

使用

date('c',time())
作为格式转换为 ISO 8601 日期(在 PHP 5 中添加) -
2012-04-06T12:45:47+05:30

使用

date("Y-m-d\TH:i:s\Z",1333699439)
获得
2012-04-06T13:33:59Z

以下是日期函数支持的一些格式

<?php
$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$today = date("H:i:s");                         // 17:16:18
?>

75
投票

假设您使用的是 PHP5.3,那么处理日期的现代方法是通过本机 DateTime 类。要获取当前时间,您可以拨打电话

$currentTime = new DateTime();

从特定时间戳(即不是现在)创建 DateTime 对象

$currentTime = DateTime::createFromFormat( 'U', $timestamp );

要获取格式化字符串,您可以调用

$formattedString = $currentTime->format( 'c' );

请参阅此处手册页


28
投票

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

<?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


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

9
投票

DateTime 类在构造函数中接受一个字符串。如果您在时间戳前面加上 @ 字符,则会创建一个带有时间戳的 DateTime 对象。对于格式化,请使用“c”格式...预定义的 ISO 8601 复合格式。

如果可以像这样使用 DateTime 类...设置正确的时区,或者如果您想要 UTC 时间,则将其省略。

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

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

这应该有效。


6
投票

你可以像......

$originalDate = "1585876500";

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

4
投票

大多数人不阅读评论,并且接受的答案中的

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
*/

1
投票

我发现这次对话中的信息非常有帮助,我只想添加我如何通过使用 MySQL 数据库中的时间戳和一点 PHP 来计算出来的

 <?= date("Y-m-d\TH:i:s\+01:00",strtotime($column['loggedin'])) ?>

输出为:2017-03-03T08:22:36+01:00

非常感谢 Stewe,你的回答对我来说是一个惊喜。

© www.soinside.com 2019 - 2024. All rights reserved.