如何从一串数字中得到年、月和日?


How can I get year month and day from a string of numbers?

我有一个以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";
输出

: -

2011年12月13日

http://www.php.net/datetime

在所有这些示例中,将格式字符串中的'M'交换为'M',以获得'12'而不是'Dec'。

如果您正在寻找这个输出"2011-12-13",那么使用

$date = new DateTime('20111213');
echo $date->format('Y-m-d');