从日期字符串获取月,日,年的最快方法

时间:2017-02-16 02:24:26

标签: php mysql database string date

我从mysql数据库中获取日期:

这是它的结果:

2017-01-20

获得月,日和年的最快方法是什么,例如,当我回应时,它将是这样的:

echo $month; //01
echo $day; //20
echo $year; //2017

4 个答案:

答案 0 :(得分:1)

假设您在名为$date

的变量中包含该字符串
$date = '2017-01-20';

如果您确定格式一致,可以explode将其list

list($year, $month, $day) = explode("-", $date, 3);

您可以使用strtotime将日期转换为时间整数,以便在date等其他函数中使用。这样做的另一个好处是能够测试这是一个结构良好的日期:

$time = strtotime($date);
if ($time === false) die("Bad date format: $date.");
$year = date('Y', $time);
$month = date('m', $time); // 'n' if you don't want leading zero
$day = date('d', $time);   // 'j' if you don't want leading zero

正如jasonmoqio指出的那样,因为你要求最快,substr比爆炸要快一点。 (在我的工作站上循环substr与爆炸1000万次仅比爆炸产生了1/1000秒的改进,所以除非这是一个运行数百万次的循环,你不会注意到差异,应该选择代码可读性。)

$year = substr($date, 0, 4);
$month = substr($date, 5, 2);
$day = substr($date, 8, 2);

答案 1 :(得分:1)

好吧,如果您知道输出将始终是格式为" YYYY-MM-DD"的字符串,那么最基本的方法是:

<?php

    $query = ... //query is your string "YYYY-MM-DD"
    $year = substr($query, 0, 4);
    $month = substr($query, 5, 2);
    $day = substr($query, 8, 2);

    echo $month;
    echo $day;
    echo $year;
?>

答案 2 :(得分:0)

试试这个:

$date = new DateTime('2017-01-20');
echo 'Year:'.$date->format("Y");
echo 'Month:'.$date->format("m");
echo 'Day:'.$date->format("d");

输出:

Year:  2017
Month: 01
Day:   20

答案 3 :(得分:0)

如果你想从mysql快速获取日期,请尝试使用这样的正则表达式。

if (preg_match('/^(?P<year>\d+)[-\/](?P<month>\d+)[-\/](?P<day>\d+)$/', $your_date, $matches)) {
    $mydate = $matches['year'] . "-" . $matches['month'] . "-" . $matches['day'];
    $whatever = date('Y-m-d', strtotime($tgl));
    // You can echo it...
    // echo $matches['year'];
    // echo $matches['month'];
    // echo $matches['day'];
}

希望这可以帮到你。 :d