0

我有以下格式的字符串:

$date = "2012-07-22 17:48:24";

我想在变量中获取年份、月份和日期并忽略时间。我正在尝试以下操作:

list($year, $month, $day) = split('[-]', $date);

这将正确的值返回到$yearand $month,但$day得到:"22 17:48:24",而我只想得到 22。

4

5 回答 5

12

您可以使用 DateTime 对象,而不是爆炸值:

<?php
$date = "2012-07-22 17:48:24";
$dateTime = new DateTime($date);

var_dump(array(
    'year' => $dateTime->format('Y'),
    'month' => $dateTime->format('m'),
    'day' => $dateTime->format('d'),        
));

这将是最灵活的选择恕我直言。

正如@zerkms 在他的评论中指出的那样,您也可以使用strtotime()and date(),但我发现自己DateTime最近才使用该课程。不仅因为它有一个很好的 OO API,还因为它会在 2038 年后继续工作:-)。不过评论没有错。

于 2012-08-19T10:28:33.003 回答
4

还有这个sscanf()功能。

sscanf('2012-07-22 17:48:24', '%d-%d-%d', $year, $month, $day);
于 2012-08-19T10:45:41.133 回答
3

使用爆炸

$date = "2012-07-22 17:48:24";
$date = explode(" ", $date);
list($year, $month, $day) = split('[-]', $date[0]);

编辑:

您也应该对日期使用explode:

list($year, $month, $day) = explode('-', $date[0]);

不鼓励使用 split ,因为它已被弃用。

于 2012-08-19T10:25:22.790 回答
1
$date = "2012-07-22 17:48:24";
preg_match('~^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$~', $date, $m);
print_r($m);
于 2012-08-19T10:27:51.370 回答
1
$date = date('Y-m-d', strtoime("2012-07-22 17:48:24"));
list($year, $month, $day) = split('[-]', $date);
于 2012-08-19T10:29:53.533 回答