如何从UNIX时间戳获取此日期时间格式?

时间:2013-08-01 05:52:09

标签: php datetime

我需要在PHP中将UNIX时间戳转换为此格式 2013-07-31T09:06:02-0400 我使用下面的代码创建UNIX时间戳,以从当前的时间戳获取第二天的UNIX时间戳。

$localtime = time();

$hour = gmdate("H",$localtime);
$minute = gmdate("i",$localtime);
$second = gmdate("s",$localtime);
$month = gmdate("n",$localtime);
$day = gmdate("j",$localtime); $day = $day + $timestamp;
$year = gmdate("Y",$localtime);
$createtimestamp =  gmmktime ($hour, $minute,$second,$month,$day,$year);

感谢。

2 个答案:

答案 0 :(得分:1)

根据http://www.php.net/manual/en/function.date.phpdate()格式支持'c',即ISO 8601格式。

    c   ISO 8601 date (added in PHP 5)  2004-02-12T15:19:21+00:00

您的代码可以简化为:

date('c'); // using current UNIX timestamp by omitting second parameter 

修改


您想要获得的是'ISO 8601'格式字符串,而不是时间戳,这是 int 。只需调用date('c')即可生成“ISO 8601”日期字符串。

此外,您可以操纵时间戳变量来抵消天/小时,然后将变量提供给date()来电的第二个参数。

$timestamp = time();
$timestamp_with_offset = $timestamp + 3600; // an hour later
date('c', $timestamp_with_offset);

答案 1 :(得分:0)

您的大多数代码都是多余的,您可以使用DateTime以非常少的代码执行您想要的操作:

$date = new \DateTime('now', new \DateTimeZone('Europe/Athens'));
echo $date->format(DATE_ISO8601);

我不知道你的时区是什么,我只是随意设置一个来说明我的答案。

See it working