开发者

Function to parse psql timestamp

I display the date or the time on my website a lot and I'm thinking about writing a function to parse a PostgreSQL timestamp.

The timestamp is in the format: Y-m-d H:i:s.u. E.g. 2011-04-08 23:00:56.544.

I'm thinking about something like this:

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

    return $formatted_timestamp;
}

However I am wondering开发者_运维问答 whether this can also be achieved without writing a parser for it myself (with the use of some PHP function).


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

Don't forget to set timezone before, e.g.

date_default_timezone_set('UTC');

Or in your case, I guess 'Europe/Amsterdam'.

You can always get PHP timestamp of this format Y-m-d H:i:s.u using strtotime(). Then, using date() you can export time in your own format. Both functions depend of time zone set.


strtotime is perfectly capable of parsing that time string, then just reformat it with date:

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


For those using DateTime class:

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


If the database isn't giving you what you want, change it. PostgreSQL can also format dates and times.

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

But that's risky in international contexts, like the web. Different locales expect different ordering of elements. (Does "04-03" mean 03-April or 04-March?) This expression is easier to understand, and it uses locale-specific abbreviations for the months.

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


Take a look at the strptime function - it can parse many time formats.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜