【问题标题】:Function to parse psql timestamp解析psql时间戳的函数
【发布时间】:2011-04-08 22:42:29
【问题描述】:

我经常在我的网站上显示日期或时间,我正在考虑编写一个函数来解析 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 函数)。

【问题讨论】:

    标签: php postgresql timestamp


    【解决方案1】:

    对于那些使用 DateTime 类的人:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:
        function parse_timestamp($timestamp, $format = 'd-m-Y')
        {
            return date($format, strtotime($timestamp));
        }
        

        别忘了在之前设置时区,例如

        date_default_timezone_set('UTC');
        

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

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

        【讨论】:

          【解决方案4】:

          如果数据库没有给你你想要的,改变它。 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
          

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              猜你喜欢
              • 2021-06-30
              • 1970-01-01
              • 2021-12-18
              • 1970-01-01
              • 1970-01-01
              • 2013-09-06
              • 2020-05-27
              • 2015-04-02
              • 1970-01-01
              相关资源
              最近更新 更多