将日期时间分割为日期和时间值

15

有没有一种快速而简单的方法,可以使用PHP将日期时间(28-1-2011 14:32:55)拆分为仅包含日期(28-1-2011)和时间(14:32),甚至更好的是(下午2:32),同时使用MySQL数据库。

谢谢!


“a datetime” 究竟是指什么?是字符串还是 DateTime 对象? - Pekka
我在网页上有一个弹出式日历,它返回一个字符串,如28-1-2011 14:32:55。但是在我的数据库中,我有一个日期列和一个时间列。因此,在PHP中,我只想将它们拆分为两个单独的变量。 - jose quervo
你可以通过空格将字符串拆分为数组 - 使用explode(' ',$datestring)。下面的答案更好,但这个着重于"快速"和"简单粗暴"。 - Gratus D.
8个回答

26

如果您使用的是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 给出了一个不错的答案。


(附注)请注意,DateTime对象使用在php.ini中设置的默认时区,如果没有通过代码更改。始终设置时区!然而,这是+1的正确代码。 - Wh1T3h4Ck5
有人对使用此方法和使用date_parse()函数的开销有什么想法吗? - Abela

10

1
是的...从查询中获取已经分割好的答案,而不是在PHP中重复解析。 - DRapp
它更快,但有时你需要用PHP来完成。 - Ramy Al Zuhouri
如何在“where”条件中使用“date_part”? - iam user

9

在php中,您可以使用datestrtotime函数轻松提取日期。

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

2

一条简单的指令就可以解决问题

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); 

0
如果你正在寻找一个非常快速而简单的解决方案。
$datetime = "28-1-2011 14:32:55";
$date_arr= explode(" ", $datetime);
$date= $date_arr[0];
$time= $date_arr[1];

0
也许你可以使用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-Ydate('d-m-Y')中表示日期的日-月-年格式。 H:idate('H:i')中表示24小时制的时间(小时:分钟)。h:i Adate('h:i A')中表示带有上午/下午的12小时制格式。


0
如果你想从Mysql中解析日期并且想要去掉时间,那么你可以使用这个函数。
$date1=date("Y-m-d",strtotime('$your database field'))

0
我们可以在MySQL中轻松地将DateTime(28-1-2011 14:32:55)拆分为日期和时间。
select SUBSTRING_INDEX("28-1-2011 14:32:55", " ",1) into @dateOnly;

select @dateOnly;

输出将是- 28-1-2011(这里我们从DateTime中分离出日期)
select SUBSTRING_INDEX("28-1-2011 14:32:55", " ",-1) into @timeOnly;

select @timeOnly;

输出将是- 14:32:55(这里我们从DateTime中分离出时间)
我们也可以将时间转换为上午和下午的格式。
select SUBSTRING_INDEX("28-1-2011 14:32:55", " ",-1) into @timeOnly;

SELECT TIME_FORMAT(@timeOnly, "%h %i %s %p")into @time;

select @time;

时间格式将变为下午02:32:55

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接