将日期时间字符串解析为年、月、日变量

问题描述 投票:0回答:5

我有以下格式的字符串:

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

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

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

这会向

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

php string date-parsing
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()
date()
,但我发现自己最近只使用
DateTime
类。不仅因为它有一个很好的 OO API,还因为它在 2038 年之后仍将继续工作:-)。不过评论并没有错。


4
投票

还有

sscanf()
功能。

sscanf('2012-07-22 17:48:24', '%d-%d-%d', $year, $month, $day);

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,因为它已被弃用。


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);

1
投票
$date = date('Y-m-d', strtoime("2012-07-22 17:48:24"));
list($year, $month, $day) = split('[-]', $date);
© www.soinside.com 2019 - 2024. All rights reserved.