如何在 php 中以特定方式解析 Number

How to parse Number in a specific manner in php

我的变量包含以下值。

$value = 20151205

我想根据这个值解析年月日。

[2015,12,05]

我如何在 php 中执行此操作?

此格式将固定为年份的前 4 位数字,然后月份的 2 位数字和日期的相同格式。

$value = 20151205;
$dto = new \DateTime($value); 
$newValue = "[" . $dto->format('Y') . "," . $dto->format('m'). "," . $dto->format('d') . ']';
echo $newValue; 

使用date_parse

 $arrDateParse = date_parse("20151205");

你会得到这样的数组

Array
(
    [year] => 2015
    [month] => 12
    [day] => 5
    [hour] => 
    [minute] => 
    [second] => 
    [fraction] => 
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 0
    [errors] => Array
        (
        )

    [is_localtime] => 
)


$value = "[" . $arrDateParse['year'] . "," . $arrDateParse['month']. "," . $arrDateParse['day'] . ']';

你可以试试字符串操作:-

<?php
$str1='20151205';
$str1=substr_replace($str1, '/', 4, 0);
$str1=substr_replace($str1, '/', 7, 0);
print_r (explode("/",$str1));
?>

只是想提供另一种可能性(此线程中的其他答案也有效);

$date = date("[Y,m,d]", strtotime('20151205'));

另请参阅:

http://php.net/manual/en/datetime.formats.date.php(适用于 strtotime() 的日期格式)

http://php.net/manual/en/function.date.php(日期函数)

preg_replace(正则表达式)方法:

$value = 20151205;
$parsed = preg_replace('/^([\d]{4})([\d]{2})([\d]{2})$/', '[,,]', $value);

演示: http://codepad.viper-7.com/28OsIp

试试这个代码

$int="20151205";
$day = substr($int,-1,2);
$month = substr($int,-4,2);
$year = substr($int,0,4);

echo $date = $day.'/'.$month.'/'.$year;

我认为最好的解决方案是像这样将变量格式化为日期

try {
   $value = (new DateTime($value))->format('\[Y\,m\,d\]');
}
catch (Exception $ex) {
   echo '$Value is not a date value';
}

将代码包含在 Try/Catch 块中,以检测变量中的值是否与日期不对应。