PHP转换日期格式

时间:2009-04-22 05:01:19

标签: php mysql datetime

  

复制

     

亲爱的,

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

中的格式

任何人都可以指导我

提前致谢

5 个答案:

答案 0 :(得分:6)

使用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));

答案 1 :(得分:2)

你应该完全置身于此:

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

如果出于某种原因,strtotime对您不起作用,可以随时用str_replace替换有问题的标点符号。

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

echo dateFormat($date1);
echo dateFormat($date2);

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

答案 4 :(得分:0)

我是菜鸟。所以想出了那样做的方法。什么是mysql需要.. shish我使用了param 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;  
   }  
 }