我从mysql数据库中获取日期:
这是它的结果:
2017-01-20
获得月,日和年的最快方法是什么,例如,当我回应时,它将是这样的:
echo $month; //01
echo $day; //20
echo $year; //2017
答案 0 :(得分:1)
假设您在名为$date
$date = '2017-01-20';
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