0

有没有办法标准化日期时间格式?目前我正在从数据库中获取数据,他们已将我的日期时间排序为这种格式2013-09-01 17:51:00,而我获取的日期时间计算采用这种格式2013-9-3---02:18即使我可能能够删除---第二个日期时间,但格式似乎与第一个不同我猜这是我无法执行差异日期时间计算的原因。

是否有任何建议或最佳方法来转换或更改与第一个 1 完全相同的新抓取的日期时间标准化,以便我可以在插入数据库之前进行一些比较?

此外,我想计算 2 个日期时间之间的差异。我在网上看到了很多例子,但大部分都是计算日期而不是日期时间~有人指导我吗?

4

3 回答 3

1

这对你有用

$phpdate = strtotime( $yourdate );
$mysqldate = date( 'Y-m-d H:i:s', $phpdate );

试试上面的例子。

如果你仍然无法得到你的约会。然后你必须分割日期和时间'-'并再次重新格式化。

于 2013-09-03T04:31:05.650 回答
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
于 2013-09-03T04:58:30.183 回答
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';
}
于 2013-09-03T10:32:49.973 回答