2014-02-27 163 views
-1

我尝试了各种答案,我发现在SO中,但仍然无法设置日期到时间戳,我总是得到一个错误的结果。转换日期到PHP的时间戳

我曾尝试:

$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 

我在做什么错在这里?

EDIT


原来的问题是,由$date产生newline。我从newlines中删除了字符串,它像一个魅力。

回答

3

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

$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来显示它。

+0

我已经尝试过了,并用'strtotime'我得到“周三,1969年12月31日17:00:00 -0700”,这仍然是不是正确的时间戳。 – otinanai

+0

然后你的问题在于'$ this-> loadTemplate('element');'因为我得到了你在这里提到的正确日期'// 2014-02-27 15:03:00'。 @otinanai – SamV

+0

这是我从'$ this-> loadTemplate('element');'得到的确切输出。我不认为这个变量(字符串)隐藏任何奇怪的东西。 – otinanai

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是错误的顺序见上

+0

我知道!你是对的,但我发布了我的绝望尝试后,随机测试属性。事实证明,问题是'$ date'生成的'newline'。 – otinanai