2011-04-03 146 views
11

有人可以給我一個快速和骯髒的方式來將日期時間(28-1-2011 14:32:55)分成日期(28-1-2011)和日期時間(14:32)甚至更好(2:32 PM)使用PHP。也使用mySQL數據庫。將日期時間分割成日期和時間值

乾杯

+0

你所說的「日期時間」究竟指什麼?一個字符串或'DateTime'對象? – 2011-04-03 19:57:12

+0

我在我的網頁上有一個彈出日曆,它返回一個字符串爲28-1-2011 14:32:55。但在我的數據庫中有一個Date列和一個Time列。所以在PHP中,我只是想將它們分成2個獨立的變量。 – 2011-04-03 20:03:35

回答

10

如果您的數據源是MySQL的:

SELECT DATE(date_field) AS date_part, TIME(date_field) AS time_part .... 

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_time

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_date

編輯: 回答從評論的問題(舉例):

WHERE DATE(date_field) > '2017-01-01' 
+1

是...從查詢中獲得已經分離的答案,而不是通過在PHP中解析來重複工作。 – DRapp 2012-02-08 14:07:51

+0

速度更快,但有時需要用PHP來完成。 – 2014-01-01 00:28:40

+0

如何在'where'條件中使用'date_part'? – 2017-03-25 12:33:44

6

在php中,您可以使用datestrtotime函數輕鬆提取。

$datetime = "28-1-2011 14:32:55"; 
$date = date('Y-m-d', strtotime($datetime)); 
$time = date('H:i:s', strtotime($datetime)); 
+0

非常感謝很多 – 2011-04-03 20:06:55

19

如果你使用PHP> 5.2:

$myvalue = '28-1-2011 14:32:55'; 

$datetime = new DateTime($myvalue); 

$date = $datetime->format('Y-m-d'); 
$time = $datetime->format('H:i:s'); 

此前PHP 5.2 mhitza給了一個很好的答案。

+0

(旁註)請注意,DateTime對象使用php.ini中設置的默認時區,如果未通過代碼進行更改。始終設置時區!但是,這是+1的正確代碼。 – Wh1T3h4Ck5 2011-04-03 21:06:02

+0

任何人都有使用date_parse()的經文開銷的想法 – Abela 2013-05-31 23:44:22

0

如果你正在尋找一個非常快速和骯髒的解決方案。

$datetime = "28-1-2011 14:32:55"; 
$date_arr= explode(" ", $datetime); 
$date= $date_arr[0]; 
$time= $date_arr[1]; 
0
如果你想從你的MySQL的日期來解析和要刪除的時間 那麼你可以使用此功能

$date1=date("Y-m-d",strtotime('$your database field')) 
0

一個簡單的指令就可以了

爆炸會將日期時間轉換爲數組

和列表將日期時間排序數組到其需要的值

$datetime = "28-1-2011 14:32:55"; 
 
list($date, $time)=explode(' ', $datetime); 
 

 
// check the result 
 
echo "date:". $date; 
 
echo "<br>time:". $time; 
 

 
// further more you can easily split the date into 
 
// year month and day 
 
list($year, $month, $day)=explode('-', $date);