2009-11-20 48 views
2

我有一個日期的格式如下掰開格式化的日期爲單個月/日/年時/分/秒的PHP

November 18, 2009, 3:00PM 

我怎樣才能打破了,這樣我可以存儲每個值它自己的變量?

如...

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

不要編輯您的解決方案到您的問題。將其作爲下面的答案發布。 – meagar 2013-03-20 04:44:18

回答

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 
+0

這是最簡單的選擇。你贏了!感謝大家的幫助和時間。 – mrpatg 2009-11-24 07:08:56

+0

是的,它與你想要的東西最接近,但其他建議因爲存在,更靈活,更安全等而得到讚譽。 – 2009-11-24 07:21:36

2

轉換您的日期爲時間戳,然後時間戳,你可以很容易地得到您的零件。另一種方法是使用正則表達式。

+1

-1表示日期的正則表達式。有很多更好的PHP方法來做到這一點。 – markus 2009-11-20 10:01:50

+0

的確,我只提及選項。我提到了正則表達式,因此我有點意味着它不是我最喜歡的選項。我更喜歡課程的日期功能。具有特定要求的 – Ben 2009-11-20 10:07:37

+0

正則表達式是一個不錯的選擇。儘管不是最好的選擇。 – 2009-11-20 10:09:22

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

我將如何處理安瓿部分? – mrpatg 2009-11-20 10:02:18

+0

date_parse將在24小時內返回小時。 – markus 2009-11-20 10:05:14

+0

AM/PM部分可以使用'date_parse_from_format'函數進行分析。它接受所有日期函數使用的格式。這些格式可以包含AM/PM規格。在這裏看到的細節:http://nl2.php.net/manual/en/function.date-parse-from-format.php – TheGrandWazoo 2009-11-20 10:05:55

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'返回給定月份的天數。

相關問題