复制
亲爱的,
我有一个PHP页面,我将显示来自Mysql db的一些数据。 我有2个日期要显示在此页面上。在我的数据库表中,日期1的格式为d / m / Y(例如:11/11/2002),日期2的格式为dmY(例如:11-11- 2002) 我需要以相同的格式显示这两种格式。我存储在变量$ dateFormat ='m / d / Y'
中的格式任何人都可以指导我
提前致谢
答案 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)
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;
}
}