2014-02-27 207 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