2014-10-10 157 views
0

如何轉換2014年10月4點13分24秒2014-10-10T04:13:24 + 00:00在PHP或MySQL如何日期時間轉換爲unix命令日期

上面提到的日期是在站點地圖

對於參考校驗Q: How do I compute lastmod date? (Sitemaps.org FAQ)

代碼的XML格式,我曾嘗試:

echo "GIVEN DATE ".$timestamp = "2014-10-10 04:13:24"; 
echo "<br>"; 

$year = date('Y',strtotime($timestamp))."; 
$month = date('m',strtotime($timestamp))."; 
$day = date('d',strtotime($timestamp)).""; 
echo '<br>'; 
$hour = date('H',strtotime($timestamp)).""; 
$minutes = date('i',strtotime($timestamp)).""; 
$seconds = date('s',strtotime($timestamp))."<br>"; 


$gmktime= gmmktime($hour,$minutes,$seconds,$month,$day,$year)."<br>"; 

echo "output date".$isodate = date('c', $gmktime); 

上述輸出轉換是否正確?

**OUTPUT** 

GIVEN DATE : 2014-10-10 04:13:24 

output date : 2014-10-10T06:13:24+02:00 
+3

哪裏有區別? – 2014-10-10 07:22:54

+1

兩個日期都是一樣的。你忘了什麼嗎? – Jerodev 2014-10-10 07:23:37

+0

對不起,請立即檢查 – 2014-10-10 07:24:45

回答

0

PHP 5

<?php 
// Set the default timezone 
date_default_timezone_set('UTC'); 


// Get Unix timestamp for a date 
// Reference: mktime(hour, minute, second, month, day, year) 
$time = mktime(04, 13, 24, 10, 10, 2014); 

// Alternatively (must be a valid English date format) 
$time = strtotime('2014-10-10 04:13:24'); 


// ISO 8601 date (added in PHP 5) 
$isodate = date('c', $time); 

echo $isodate; // 2014-10-10T04:13:24+00:00 


// RFC 2822 formatted date 
$rfcdate = date('r', $time); 

echo $rfcdate; // Fri, 10 Oct 2014 04:13:24 +0000 
?> 

參考文獻:

+0

你可以使用'mkdate'或'gmmkdate'來做到這一點。我添加了一個例子。 – 2014-10-10 07:53:54

+0

爲輸入2014-10-10 04:13:24我得到這2014-10-10T06:13:24 + 02:00的結果。它是否正確? – 2014-10-10 08:38:38

+0

種。這是您當地時區格式正確的日期。如果你想要GMT/UTC日期,你必須使用'gmdate()'而不是'date()'。我改變它以適應您的需求。 – 2014-10-10 08:44:22

0

在PHP

在PHP中使用strptime()解析的時間,把它變成一個結構化的陣列。然後將結果傳遞給mktime()函數以獲取UNIX時間戳。

在MySQL

使用UNIX_TIMESTAMP

SELECT UNIX_TIMESTAMP(datetime_column) FROM table; 
+0

不起作用,它不符合我在問題中提到的格式 – 2014-10-10 07:33:04

+0

錯誤:致電未定義的函數strptime() – 2014-10-10 08:05:47

1

你的輸出是正確根據Sitemaps.org規範。 「2014-10-10T06:13:24+02:00」與「2014-10-10T04:13:24+00:00」的日期/時間相同。

瞭解更多關於Sitemaps.org使用的W3C Datetime encoding的信息。

另外,不要用日期函數解決這個問題,用字符串函數/操作解決這個問題:你在固定的位置修改字符串內的一個字節,然後你追加一個字符串:

$timestamp = "2014-10-10 04:13:24"; 
$timestamp[10] = "T"; 
$timestamp .= "+00:00"; 

echo $timestamp, "\n"; // 2014-10-10T04:13:24+00:00 

或者如果你想節省一些字節在文件中使用「Z」,而不是「+00:00」來表示時區:

$timestamp = "2014-10-10 04:13:24"; 
$timestamp[10] = "T"; 
$timestamp .= "Z"; 

echo $timestamp, "\n"; // 2014-10-10T04:13:24Z 
+0

爲什麼他們不應該用函數解決這個問題? – arielnmz 2014-10-10 12:35:23

+0

不與*日期函數*,因爲它不是必需的。問題不是第一手日期問題,而只是一個字符串操作。然而,你應該用函數來解決這個問題,把例子包裝在一個函數中,然後使用該函數。稍後,您可以輕鬆更改處理格式,例如所述優化以Z作爲時區指示符。 – hakre 2014-10-10 12:48:48

+0

那麼,如果日期已經是UTC,那麼情況就是這樣,而且OP也沒有說是否。 +1,因爲如果它是UTC,這不是時間本身的問題。 – arielnmz 2014-10-10 13:53:57

相關問題