【发布时间】:2012-04-19 21:11:32
【问题描述】:
使用 PHP,我想将 UNIX 时间戳转换为类似于此的日期字符串:2008-07-17T09:24:17Z
如何将1333699439 等时间戳转换为2008-07-17T09:24:17Z?
【问题讨论】:
标签: php unix-timestamp
使用 PHP,我想将 UNIX 时间戳转换为类似于此的日期字符串:2008-07-17T09:24:17Z
如何将1333699439 等时间戳转换为2008-07-17T09:24:17Z?
【问题讨论】:
标签: php unix-timestamp
像这样尝试gmdate:
<?php
$timestamp=1333699439;
echo gmdate("Y-m-d\TH:i:s\Z", $timestamp);
?>
【讨论】:
gmdate() 以格林威治标准时间返回日期/时间。 date() 将返回本地日期/时间。
date 和 gmdate 的输出将根据 TZ 变量而有所不同(至少在 *nix 上)
使用日期函数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
?>
【讨论】:
假设您使用的是 PHP5.3,那么处理日期的现代方式是通过本机 DateTime class。要获取当前时间,您只需调用
$currentTime = new DateTime();
从特定时间戳(即不是现在)创建 DateTime 对象
$currentTime = DateTime::createFromFormat( 'U', $timestamp );
要获取格式化的字符串,您可以调用
$formattedString = $currentTime->format( 'c' );
【讨论】:
设置默认时区以获得正确的结果非常重要
<?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);
?>
【讨论】:
Z用来表示是UTC时间,所以时区要设置为UTC
<?php
$timestamp=1486830234542;
echo date('Y-m-d H:i:s', $timestamp/1000);
?>
【讨论】:
$unixtime_to_date = date('jS F Y h:i:s A (T)', $unixtime);
这应该可以。
【讨论】:
DateTime 类在构造函数中接受一个字符串。如果您在时间戳前面加上 @ 字符,您将创建一个带有时间戳的 DateTime 对象。对于格式化,请使用“c”格式...预定义的 ISO 8601 复合格式。
如果可以像这样使用 DateTime 类...设置正确的时区,如果您想要 UTC 时间,则将其省略。
$dt = new DateTime('@1333699439');
$dt->setTimezone(new DateTimeZone('America/New_York'));
echo $dt->format('c');
【讨论】:
我发现此对话中的信息非常有用,因此我只想通过使用 MySQL 数据库中的时间戳和一点 PHP 来添加我的计算方法
<?= date("Y-m-d\TH:i:s\+01:00",strtotime($column['loggedin'])) ?>
输出为:2017-03-03T08:22:36+01:00
非常感谢 Stewe,您的回答对我来说是一个尤里卡。
【讨论】:
你可以像.....
$originalDate = "1585876500";
echo $newDate = date("Y-m-d h:i:sa", date($originalDate));
【讨论】: