开发者

break apart formatted date into individual month/day/year hour/minute/second in php

I have a date in the following format

November 18, 2009, 3:00PM

How ca开发者_开发技巧n i break that up so that i can store each value as its own variable?

such as...

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


Use the 'date_parse' (http://nl2.php.net/manual/en/function.date-parse.php) function. It returns an array with the parsed items:

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] => 
)


Convert your date into a timestamp, then with the timestamp you can easily get your parts. An other way is using a regular expression.


$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";

Output

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


More complex solution. If your dates may be in the different standards you can use date() function (http://php.net/manual/en/function.date.php) + strtotime() function (http://php.net/manual/en/function.strtotime.php), which parse string and returns the unix timestamp.

For example, if you want to get a year from your date string you could write next code:

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

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

Or, if you want to know how much days in the month in date you get, you could write such code:

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

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

't' returns the number of days in the given month.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜