2011-04-08 84 views
3

我在網站上顯示日期或時間很多,我正在考慮編寫一個函數來解析PostgreSQL時間戳。解析psql時間戳的函數

時間戳格式爲:Y-m-d H:i:s.u。例如。 2011-04-08 23:00:56.544

我想是這樣的:

function parse_timestamp($timestamp, $format = 'd-m-Y') 
{ 
    // parse the timestamp 

    return $formatted_timestamp; 
} 

但是我想知道這是否也可以不自己寫一個解析器它(使用一些PHP函數)來實現。

回答

5
function parse_timestamp($timestamp, $format = 'd-m-Y') 
{ 
    return date($format, strtotime($timestamp)); 
} 

不要忘記在之前設置時區,例如,

date_default_timezone_set('UTC'); 

或者在你的情況下,我猜'Europe/Amsterdam'

您可以隨時使用strtotime()獲取此格式的PHP時間戳Y-m-d H:i:s.u。然後,使用date(),您可以使用自己的格式導出時間。這兩個功能都取決於時區設置。

0

看看strptime函數 - 它可以解析許多時間格式。

3

strtotime是完全能夠分析當時的字符串,然後只需用date重新格式化:

echo date('d-m-Y', strtotime('2011-04-08 23:00:56.544')); // 08-04-2011 
2

如果數據庫沒有給你想要的東西,改變它。 PostgreSQL也可以format dates and times

select to_char(timestamp '2011-03-04 07:04:00', 'DD-MM-YYYY'); 
04-03-2011 

但是這在國際背景下是有風險的,就像網絡一樣。不同的語言環境期望元素的不同排序。 (「04-03」是指4月3日還是3月4日?)這個表達式更容易理解,並且它在月份中使用特定於語言環境的縮寫。

select to_char(timestamp '2011-03-04 07:04:00', 'DD-Mon-YYYY'); 
04-Mar-2011 
+0

很好的補充。謝謝! – PeeHaa 2011-04-10 16:51:51

1

對於使用DateTime類的:

DateTime::createFromFormat('Y-m-d H:i:s.u', $yourTime);