在PHP中将格式化日期分解为单个月/日/年小时/分钟/秒

时间:2009-11-20 09:56:34

标签: php datetime

我的日期格式如下

November 18, 2009, 3:00PM

我如何打破这一点,以便我可以将每个值存储为自己的变量?

如......

$month //November
$day //18
$year //2009
$hour //03
$minute //00
$ampm //PM

4 个答案:

答案 0 :(得分:4)

使用'date_parse'(http://nl2.php.net/manual/en/function.date-parse.php)函数。它返回一个包含已解析项的数组:

Array
(
    [year] => 2006
    [month] => 12
    [day] => 12
    [hour] => 10
    [minute] => 0
    [second] => 0
    [fraction] => 0.5
    [warning_count] => 0
    [warnings] => Array()
    [error_count] => 0
    [errors] => Array()
    [is_localtime] => 
)

答案 1 :(得分:2)

将您的日期转换为时间戳,然后使用时间戳您可以轻松获取您的零件。另一种方法是使用正则表达式。

答案 2 :(得分:1)

$str = "November 18, 2009, 3:00PM";
list($month,$day,$year,$time) = preg_split('/[ ,]/',$str,false,PREG_SPLIT_NO_EMPTY);
preg_match('/([0-9]+):([0-9]+)([AP]M)/',$time,$timeparts);
list($time,$hour,$minute,$ampm) = $timeparts;

echo "\$month  $month\n";
echo "\$day    $day\n";
echo "\$year   $year\n";
echo "\$hour   $hour\n";
echo "\$minute $minute\n";
echo "\$ampm   $ampm\n";

输出

$month  November
$day    18
$year   2009
$hour   3
$minute 00
$ampm   PM

答案 3 :(得分:1)

更复杂的解决方案。 如果你的日期可能是不同的标准,你可以使用date()函数(http://php.net/manual/en/function.date.php)+ strtotime()函数(http://php.net/manual/en/function.strtotime.php),它解析字符串并返回unix时间戳。

例如,如果您想从日期字符串中获取一年,则可以编写下一个代码:

$date = 'November 18, 2009, 3:00PM';

$year = date('Y', strtotime($date));

或者,如果你想知道你所得到的月份中有多少天,你可以写下这样的代码:

$date = 'November 18, 2009, 3:00PM';

$num_of_days = date('t', strtotime($date));

't'返回给定月份的天数。