有没有一种快速而简单的方法,可以使用PHP将日期时间(28-1-2011 14:32:55)拆分为仅包含日期(28-1-2011)和时间(14:32),甚至更好的是(下午2:32),同时使用MySQL数据库。
谢谢!
如果您使用的是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 给出了一个不错的答案。
如果你的数据源是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'
在php中,您可以使用date
和strtotime
函数轻松提取日期。
$datetime = "28-1-2011 14:32:55";
$date = date('Y-m-d', strtotime($datetime));
$time = date('H:i:s', strtotime($datetime));
一条简单的指令就可以解决问题
explode函数将日期时间转换为数组
而list函数则将日期时间数组按所需值进行排序
$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);
$datetime = "28-1-2011 14:32:55";
$date_arr= explode(" ", $datetime);
$date= $date_arr[0];
$time= $date_arr[1];
date()
和strtotime()
函数以及DateTime
对象将日期时间字符串拆分为日期和时间组件,以便更好地进行格式化。$datetimeString = '28-1-2011 14:32:55';
// Splitting into date and time
$date = date('d-m-Y', strtotime($datetimeString)); // Date format: 28-1-2011
$time24 = date('H:i', strtotime($datetimeString)); // Time format (24-hour): 14:32
$time12 = date('h:i A', strtotime($datetimeString)); // Time format (12-hour with AM/PM): 02:32 PM
echo "Date: $date<br>";
echo "Time (24-hour format): $time24<br>";
echo "Time (12-hour format): $time12";
strtotime()
函数将字符串转换为Unix时间戳。
date()
函数将时间戳格式化为所需的日期或时间格式。
d-m-Y
在date('d-m-Y')
中表示日期的日-月-年格式。
H:i
在date('H:i')
中表示24小时制的时间(小时:分钟)。h:i A
在date('h:i A')
中表示带有上午/下午的12小时制格式。
$date1=date("Y-m-d",strtotime('$your database field'))
select SUBSTRING_INDEX("28-1-2011 14:32:55", " ",1) into @dateOnly;
select @dateOnly;
select SUBSTRING_INDEX("28-1-2011 14:32:55", " ",-1) into @timeOnly;
select @timeOnly;
select SUBSTRING_INDEX("28-1-2011 14:32:55", " ",-1) into @timeOnly;
SELECT TIME_FORMAT(@timeOnly, "%h %i %s %p")into @time;
select @time;
DateTime
对象? - Pekka