我有以下格式的字符串:
$date = "2012-07-22 17:48:24";
我想在变量中获取年,月和日期并忽略时间。我正在努力追随:
list($year, $month, $day) = split('[-]', $date);
这会将正确的值返回到$year
和$month
,但$day
会获得:"22 17:48:24"
,而我只想获得22。
答案 0 :(得分: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'),
));
这将是最灵活的选择imho。
正如@zerkms在评论中指出的那样,您也可以使用strtotime()
和date()
,但我发现自己最近只使用DateTime
课程。不仅因为它有一个不错的OO API,还因为它将在2038年后继续工作:-)。但评论没有错。
答案 1 :(得分:4)
还有sscanf()
功能。
sscanf('2012-07-22 17:48:24', '%d-%d-%d', $year, $month, $day);
答案 2 :(得分:3)
使用explode:
$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]);
不鼓励使用拆分,因为它已被弃用。
答案 3 :(得分: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);
答案 4 :(得分:1)
$date = date('Y-m-d', strtoime("2012-07-22 17:48:24"));
list($year, $month, $day) = split('[-]', $date);