【问题标题】:PHP converting date formatPHP转换日期格式
【发布时间】:2009-04-22 05:01:18
【问题描述】:

复制

亲爱的,

我有一个 PHP 页面,我将在其中显示来自 Mysql db 的一些数据。 我有 2 个日期要显示在此页面上。在我的 db 表中,日期 1 的格式为 d/m/Y(例如:2002 年 11 月 11 日),日期 2 的格式为 d-m-Y(例如:11-11- 2002) 我需要以相同的格式显示这两者。我存储在变量 $dateFormat='m/d/Y' 中的格式

谁能指导我

提前致谢

【问题讨论】:

    标签: php mysql datetime


    【解决方案1】:

    使用strtotime 将字符串转换为Unix 时间戳,然后使用date 函数生成正确的输出格式。

    由于您使用的是英国日期格式“d/m/Y”,而 strtotime 需要一种美国格式,因此您需要稍微不同地对其进行转换:

    $date1 = "28/04/2009";
    $date2 = "28-04-2009";
    
    function ukStrToTime($str) {
        return strtotime(preg_replace("/^([0-9]{1,2})[\/\. -]+([0-9]{1,2})[\/\. -]+([0-9]{1,4})/", "\\2/\\1/\\3", $str));
    }
    
    $date1 = date($dateFormat, ukStrToTime($date1));
    $date2 = date($dateFormat, ukStrToTime($date2));
    

    【讨论】:

    • 当我将“28/04/2009”传递给上述方法时,我得到“01/01/70”
    • 我没有注意到您使用的是英国时间。我已经更新了我的示例。
    • 它不是“英国时间”,而是“不是奇怪的美国日期格式”。世界其他地方几乎都使用 dd/mm/yyyy 参见en.wikipedia.org/wiki/…。 ;)
    • 我原以为 PHP 会使用区域设置作为其默认日期顺序,就像在 setlocale() 中一样。如果没有,那将是令人失望的。
    • 哦,当您想要考虑语言环境时,显然还有 strtotime 的替代方法:au2.php.net/manual/en/function.strptime.php
    【解决方案2】:

    你应该已经准备好了:

    echo date($dateFormat, strtotime($date1));
    echo date($dateFormat, strtotime($date2));
    

    【讨论】:

      【解决方案3】:

      您可能想查看strptime 函数。这可以将字符串中的任何日期转换回数值。与strtotime 不同,它可以适应不同的格式,包括来自不同语言环境的格式,并且它的输出不是 UNIX 时间戳,因此它能够解析 1970 年之前和 2037 年之后的日期。虽然它可能需要更多的工作,因为它返回一个关联数组。

      不幸的是,它在 Windows 系统上也不可用,因此它不可移植。

      【讨论】:

        【解决方案4】:

        如果由于某种原因 strtotime 对你不起作用,总是可以用 str_replace 替换有问题的标点符号。

        function dateFormat($date) {
        $newDate = str_replace(/, -, $date);
        echo $newDate;
        }
        
        echo dateFormat($date1);
        echo dateFormat($date2);
        

        我知道这会让大多数人感到畏缩,但它可能会帮助您在未来格式化非日期字符串。

        【讨论】:

        • str_replace 需要字符串,您缺少引号。
        【解决方案5】:

        我是菜鸟。所以想出了这样做的方法。什么 mysql 需要.. shish 我使用了参数 2 ...希望它有帮助。问候

        public function dateConvert($date,$param){  
             if($param==1){  
                 list($day,$month,$year)=split('[/.-]',$date);  
                 $date="$year-$month-$day"; //changed this line  
                 return $date;  
             }  
             if ($param == 2){ //output conversion  
                    list($day,$month,$year) = split('[/.]', $date);  
                    $date = "$year-$day-$month";  
                    return $date;  
           }  
         }  
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-04-30
          • 1970-01-01
          • 1970-01-01
          • 2012-06-05
          • 1970-01-01
          • 1970-01-01
          • 2011-11-05
          • 1970-01-01
          相关资源
          最近更新 更多