【问题标题】:Format a date string in PHP在 PHP 中格式化日期字符串
【发布时间】:2011-04-08 22:05:23
【问题描述】:

如果我有一个代表日期的字符串,例如“2011/07/01”(即 2011 年 7 月 1 日),我将如何以更易读的形式输出它,例如:

1 July 2011
1 Jul 2011  (month as three letters)

另外,我怎样才能让它智能地将日期范围显示为“2011/07/01”到“2011/07/11”作为

1 - 11 July 2001

(在这种情况下不重复“七月”和“2011”)

【问题讨论】:

    标签: php date


    【解决方案1】:

    您可以使用strtotime() 将您的日期转换为时间戳,然后在该时间戳上使用date()。在你的例子中:

    $date = date("j F Y", strtotime("2011/07/01")); // 1 July 2011
    $date = date("j M Y", strtotime("2011/07/01")); // 1 Jul 2011
    

    【讨论】:

      【解决方案2】:

      正如 NullUserException 提到的,您可以使用strtotime 将日期字符串转换为时间戳。您可以通过比较年、月和日确定的第一个日期使用不同的日期格式来输出“智能”范围:

      $date1 = "2011/07/01";
      $date2 = "2011/07/11";
      
      $t1 = strtotime($date1);
      $t2 = strtotime($date2);
      
      // get date and time information from timestamps
      $d1 = getdate($t1);
      $d2 = getdate($t2);
      
      // three possible formats for the first date
      $long = "j F Y";
      $medium = "j F";
      $short = "j";
      
      // decide which format to use
      if ($d1["year"] != $d2["year"]) {
          $first_format = $long;
      } elseif ($d1["mon"] != $d2["mon"]) {
          $first_format = $medium;
      } else {
          $first_format = $short;
      }
      
      printf("%s - %s\n", date($first_format, $t1), date($long, $t2));
      

      【讨论】:

        【解决方案3】:

        至于第二个:

        $time1 = time();
        $time2 = $time1 + 345600; // 4 days
        if( date("j",$time1) != date("j",$time2) && date("FY",$time1) == date("FY",$time2) ){
           echo date("j",$time1)." - ".date("j F Y",$time2);
        }
        

        Can be seen in action here

        多加条件就行了

        【讨论】:

          【解决方案4】:

          我会使用strtotime AND strftime。是一种更简单的方法。

          例如,如果 a 有一个日期字符串,如“2001 年 10 月 20 日 18:29:50 GMT”,我想以日/月/年的格式获取它,我可以这样做:

          $mystring = "Oct 20 18:29:50 2001 GMT";
          printf("Original string: %s\n", $mystring);
          $newstring = strftime("%d/%m/%Y", strtotime($mystring));
          printf("Data in format day/month/year is: %s\n", $newstring);
          

          【讨论】:

            猜你喜欢
            • 2012-02-14
            • 1970-01-01
            • 1970-01-01
            • 2015-06-24
            • 2017-03-23
            • 2020-05-22
            • 2012-02-11
            • 1970-01-01
            • 2011-02-25
            相关资源
            最近更新 更多