有没有办法标准化日期时间格式?
目前我正在从数据库中获取数据,他们将我的日期时间排序为此格式2013-09-01 17:51:00
,而我抓取的日期时间计算采用此格式2013-9-3---02:18
即使我可以删除---
对于第二个日期时间,但格式似乎与前一个1不同,我想这是我无法执行差异日期时间计算的原因。
是否有任何建议或最佳方式来转换或更改新的抓取日期时间标准化与第一个完全相同,以便我可以在插入数据库之前执行一些比较?
此外,我想计算2个日期时间之间的差异。我在网上看到了很多例子,但大多数是计算日期而不是日期时间〜任何人都指导我?
答案 0 :(得分:1)
这对你有用
$phpdate = strtotime( $yourdate );
$mysqldate = date( 'Y-m-d H:i:s', $phpdate );
试试上面的例子。
如果你仍然无法得到约会。然后你必须用'-'
分割日期和时间并重新格式化。
答案 1 :(得分:1)
试试这个
$date = '2013-9-3---02:18';
$newdate = str_replace('---',' ',$date);
$phpdate = strtotime($newdate);
echo $mydate = date( 'Y-m-d H:i:s', $phpdate );
echo "<br>";
echo $mysqldate = '2013-09-01 17:51:00';
echo "<br>";
$datetime1 = new DateTime($mydate);
$datetime2 = new DateTime($mysqldate);
$interval = $datetime1->diff($datetime2);
echo $interval->format('%Y-%m-%d %H:%i:%s');
输出
2013-09-03 02:18:00
2013-09-01 17:51:00
00-0-1 08:27:0
答案 2 :(得分:1)
这应该有效:
$dateF = '2013-09-01 17:51:00';
$dateT = '2013-9-3---02:18';
$dtF = new DateTime($dateF);
$dtT = DateTime::createFromFormat('Y n j H:i', str_replace('-', ' ', $dateT));
这两个日期现在都在DateTime
对象中,所以现在你可以用它们做任何事情了:
$diff = $dtF->diff($dtT);
print_r($diff);
/*
DateInterval Object
(
[y] => 0
[m] => 0
[d] => 1
[h] => 8
[i] => 27
[s] => 0
[invert] => 0
[days] => 1
)
*/
if ($dtF > $dtT) {
echo 'Datetime in variable $dtF is bigger than $dtT';
}