【问题标题】:Formating date string with strtotime and date使用 strtotime 和日期格式化日期字符串
【发布时间】:2014-06-07 06:47:57
【问题描述】:

我有日期字符串(例如'2014-06-06 12:24:48')。我用其他格式显示什么(例如'06.06.2014 (12:24:48)')。

$date = '2014-06-06 12:24:48';
echo date('d-m-Y (H:i:s)', strtotime($date));

输出日期是否总是与输入日期相同?对于任何有效的输入日期。

date('Y-m-d H:i:s') === date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s'))); 
// Always true?

【问题讨论】:

    标签: php date strtotime


    【解决方案1】:

    是的,您可以更改日期格式,例如

    $date = '2014-06-06 12:24:48';
    echo date('d-m-Y (H:i:s)', strtotime($date));
    

    更多格式:-http://www.php.net//manual/en/function.date.php

    输出将与您输入的日期不同,这取决于您输入的日期格式 所以如果你的日期格式是:-

    $date = date('Y-m-d H:i:s');
    

    输入日期格式为

    $input_date = date('Y/m/d H:i:s');
    

    那么您需要将输入日期格式转换为与其他日期相匹配

    $input_date = date('Y-m-d H:i:s', strtotime($inputdate));
    

    否则您输入的日期格式相同则无需转换

    然后匹配if($date == $input_date)

    【讨论】:

      【解决方案2】:
      date('Y-m-d H:i:s') === date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s'))); 
      // Always true?
      

      虽然该陈述在大多数情况下都是正确的,但它并不总是正确,因为左边的 (date('Y-m-d H:i:s') 在右边的 date('Y-m-d H:i:s') 之后被评估,所以如果代码运行一纳秒在第二个数字即将改变之前,两个日期的第二个数字将不同。

      您可以通过运行下面的代码来验证这两个语句并不总是相等的,最终将打印“False”。

      while(true) {
        $x = (date('Y-m-d H:i:s') === date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s'))));
        if(!$x) {
          exit("False");
        }
      }
      

      但是,如果您为每个 date 调用提供相同的时间戳,则语句将始终相等

      $time = strtotime(date('Y-m-d H:i:s'));
      date('Y-m-d H:i:s',$time) === date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s',$time))); 
      //Always true
      

      【讨论】:

        【解决方案3】:

        是的。这两个日期将始终是相同的日期和时间 - 采用不同的格式:

        2014-06-06 12:24:48
        06-06-2014 (12:24:48)
        

        See demo

        编辑

        声明:

        date('Y-m-d H:i:s') === date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s')));
        

        总是通常为真(请参阅下面的编辑 2)。

        date() 的第二个参数默认为当前时间戳。

        strtotime(date('Y-m-d H:i:s')) 是当前时间戳。

        所以两个语句:

        date('Y-m-d H:i:s')
        

        date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s'))
        

        逻辑上相同。

        Another demo

        编辑 2

        FuzzyTree's answer 指出,虽然这两个陈述通常是正确的,但它们并不总是正确的。有关更多详细信息,请参阅他的答案。

        【讨论】:

        • @sectus 查看编辑 - 不确定您所说的任何日期是什么意思。是的,这个逻辑适用于任何日期。无论格式如何,日期时间始终是相同的日期时间。
        • 该陈述并不总是正确的,请参阅我的回答
        猜你喜欢
        • 1970-01-01
        • 2012-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多