在PHP中将日期转换为时间戳

时间:2014-02-27 23:53:09

标签: php datetime mktime

我尝试过在SO中找到的各种答案,但我仍无法设定时间戳的日期,而且总是得到错误的结果。

我试过了:

$date = $this->loadTemplate('element'); //2014-02-27 15:03:00
list($year, $month, $day, $hour, $minute, $second) = split('[- :]', $date);
$timestamp = mktime((int) $hour, (int) $minute,(int) $second,(int) $month,(int) $day,(int) $year);
echo date("r", $timestamp);

我得到的结果是:

Wed, 02 Dec 2026 00:00:00 -0700

我在这里做错了什么?

修改


事实证明问题是由newline生成的$date。我从newlines剥离了字符串,它就像一个魅力。

2 个答案:

答案 0 :(得分:3)

而不是mktime strtotime怎么样?似乎更容易。

$date = '2014-02-27 15:03:00';
echo date("r", strtotime($date));

// Outputs Thu, 27 Feb 2014 15:03:00 +0000

事实,如果您使用PHP 5.2及更高版本,请使用DateTime

$date = new \DateTime('2014-02-27 15:03:00');
echo $date->format("r");

// Outputs Thu, 27 Feb 2014 15:03:00 +0000

以下是展示它的ideone

答案 1 :(得分:2)

$date = $this->loadTemplate('element'); //2014-02-27 15:03:00
list($year, $month, $day, $hour, $minute, $second) = split('[- :]', $date);
$timestamp = mktime($hour, $minute,$second,$month,$day,$year);
echo date("r", $timestamp);

你的mktime顺序错误见上文