我有一个以20111213 (YYYYMMDD)
形式给我的日期,我正试图将这些部分分为日,月和年。我正在使用这个代码:
$day = substr($string, 6, 8);
$month = substr($string, 4, 6);
$year = substr($string, 0, 4);
$final = $day . "-" . $month . "-" . $year;
echo $final;
但是输出结果是
13-1213-2011
正如您所看到的,月份被解释为4个字符,我不能让它只输出12个字符。谢谢你的帮助。
你误用了第三个参数。它是所需子字符串的长度,而不是结束位置:
$day = substr($string, 6, 2); // 2 char substring
$month = substr($string, 4, 2); // 2 char substring
$year = substr($string, 0, 4); // 4 char substring
$final = $day . "-" . $month . "-" . $year;
echo $final;
// 13-12-2011
读取手动子字符串,第三个参数为$length
使用
$string = "20111213";
$day = substr($string, 6, 2);
$month = substr($string, 4, 2);
$year = substr($string, 0, 4);
$final = $day . "-" . $month . "-" . $year;
echo $final;
试试这个
var_dump(date('Y M d', strtotime('20111213')));
输出: -
'2011 Dec 13'
您可以使用格式字符串随意修改输出。
http://www.php.net/date
http://www.php.net/strtotime
另外:-
$date = new DateTime('20111213');
$year = $date->format('Y');
$month = $date->format('M');
$day = $date->format('d');
echo "$year $month $day";
输出: -
http://www.php.net/datetime2011年12月13日
在所有这些示例中,将格式字符串中的'M'交换为'M',以获得'12'而不是'Dec'。
如果您正在寻找这个输出"2011-12-13",那么使用
$date = new DateTime('20111213');
echo $date->format('Y-m-d');