使用PHP从时间戳获取日期和时间

26
在我的数据库中,我有一个时间戳列......它的格式如下:2012-04-02 02:57:54
然而,我想把它们分成$date和$time。
经过查阅php手册后...我发现date()、date_format()和strtotime()可以帮助我将它们分开...(不确定是否正确)
但我不太确定如何编写代码...
在我的php文件中,提取的时间戳将是$row['DATETIMEAPP']。
$date = strtotime('d-m-Y',$row['DATETIMEAPP']);
$time = strtotime('Gi.s',$row['DATETIMEAPP']);
或者
$date = date('d-m-Y',$row['DATETIMEAPP']);

工作?

我能否使用date()来获取时间?

先行致谢。


为什么这个问题不太有用?只是想知道从时间戳中获取2个值的最佳方法是什么。 - Hubert
我无法尝试,因为页面上还有其他错误...我想知道这是否会导致错误...谢谢 - Hubert
@deceze 我认为这是将日期转换为时间戳的方法? - Hubert
不,这只是提取YYYY-MM-DD日期字符串中DD部分的示例之一。类似的问题已经被发布了很多次。 - deceze
8个回答

71
$timestamp = strtotime($row['DATETIMEAPP']);

给你时间戳,然后你可以使用date来格式化:

$date = date('d-m-Y', $timestamp);
$time = date('Gi.s', $timestamp);

或者

list($date, $time) = explode('|', date('d-m-Y|Gi.s', $timestamp));

这是最好的且简单易懂的答案。帮了很大的忙。 - arefindev

10

如果你不想改变时间戳的日期和时间格式,你可以使用php中的explode函数。

$timestamp = "2012-04-02 02:57:54"
$datetime = explode(" ",$timestamp);
$date = $datetime[0];
$time = $datetime[1];

1
list($date,$time)=explode(' ','2014-11-21 16:38:00'); 将日期和时间分离开来,赋值给变量$date和$time。 - zzapper

2

You can try this:

For Date:

$date = new DateTime($from_date);
$date = $date->format('d-m-Y');

时间相关:

$time = new DateTime($from_date);
$time = $time->format('H:i:s');

2
$mydatetime = "2012-04-02 02:57:54";
$datetimearray = explode(" ", $mydatetime);
$date = $datetimearray[0];
$time = $datetimearray[1];
$reformatted_date = date('d-m-Y',strtotime($date));
$reformatted_time = date('Gi.s',strtotime($time));

1
$timestamp='2014-11-21 16:38:00';

list($date,$time)=explode(' ',$timestamp);

// 只是时间

preg_match("/ (\d\d:\d\d):\d\d$/",$timestamp,$match);
echo "\n<br>".$match[1];

0

对我来说可行:

select DATE( FROM_UNIXTIME( columnname ) ) from tablename;

0
如果您想使用DateTime类,您可以这样做:
$timestamp = $row['DATETIMEAPP']; // String formatted as "2012-04-02 02:57:54"

// Create DateTime object from custom timestamp
$dt = DateTime::createFromFormat('Y-m-d H:i:s', $timestamp);

$date = $dt->format('d-m-Y'); // String variable of just the date
$time = $dt->format('H:i:s'); // String variable of just the time

如果你担心使用DateTime而不是strtotime()date(),我想指引你去StackOverflow上的这个讨论,标题为“DateTime类与本地PHP日期函数的比较”。


-1

你可以选择使用数据库函数进行日期/时间格式化。例如,在MySQL查询中使用:

SELECT DATE_FORMAT(DATETIMEAPP,'%d-%m-%Y') AS date, DATE_FORMT(DATETIMEAPP,'%H:%i:%s') AS time FROM yourtable

我认为超过数据库也提供了日期格式化的解决方案


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