用于解析psql时间戳的函数

时间:2011-04-08 22:42:30

标签: php postgresql timestamp

我在网站上大量显示日期或时间,我正在考虑编写一个解析PostgreSQL时间戳的函数。

时间戳采用以下格式: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 个答案:

答案 0 :(得分:5)

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

不要忘记在之前设置时区,例如

date_default_timezone_set('UTC');

或者在您的情况下,我猜'Europe/Amsterdam'

您始终可以使用Y-m-d H:i:s.u获取此格式strtotime()的PHP时间戳。然后,使用date(),您可以以自己的格式导出时间。这两个功能都取决于时区设置。

答案 1 :(得分:4)

strtotime完全能够解析该时间字符串,然后只需用date重新格式化它:

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

答案 2 :(得分:2)

如果数据库没有提供您想要的内容,请进行更改。 PostgreSQL也可以format dates and times

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

但这在国际环境中有风险,比如网络。不同的语言环境期望元素的不同排序。 (" 04-03"意思是03年4月或4月4日?)这个表达式更容易理解,它使用了几个月的特定于区域设置的缩写。

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

答案 3 :(得分:1)

对于使用DateTime类的人:

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

答案 4 :(得分:0)

查看strptime函数 - 它可以解析许多时间格式。