如何在 php 中将第一个日期时间对象与另一个日期时间对象进行比较
how do I compare first object of date time to another object of date time in php
我在这里使用一个日期时间对象是这个
$cdate = date('d/m/Y h:i:sa')
另一个日期时间对象是这个
$udate = date("d/m/Y h:i:sa", strtotime("72 hours"));
为了比较我用的是这个条件
if($cdate >= $udate)
但问题是...在这种情况下,它只比较一天而不是整个日期和时间。
从 date()
返回的字符串仅在某些情况下具有可比性。您应该使用 DateTime()
其对象总是可比较的:
$cdate = new DateTime();
$udate = new DateTime('+3 days');
if($cdate >= $udate) {
}
if(strtotime($cdate) >= strtotime($udate)){
// your condition
}
希望对您有所帮助:)
date()
函数 returns 一个字符串 - 不是 DateTime 对象。因此,您正在进行的 >=
比较是 string 比较,而不是 dates/times.
的比较
如果您真的想进行字符串比较,请使用一种可以进行此类排序的格式,例如 ISO 8601。您可以使用格式 'c'.
轻松完成此操作
然而,更好的方法是比较实际的 DateTime 对象或整数时间戳(例如您将从 time()
获得的内容)。
您不比较日期时间并且没有对象(如 OOP
) in your code. $cdate
and $udate
are strings,这就是使用字符串比较规则(即字典顺序)比较它们的原因。
您可以使用时间戳(即整数秒):
// Use timestamps for comparison and storage
$ctime = time();
$utime = strtotime("72 hours");
// Format them to strings for display
$cdate = date('d/m/Y h:i:sa', $ctime);
$udate = date('d/m/Y h:i:sa', $utime);
// Compare timestamps
if ($ctime < $utime) {
// Display strings
echo("Date '$cdate' is before date '$udate'.\n");
}
或者您可以使用 DateTime
:
类型的对象
$cdate = new DateTime('now');
$udate = new DateTime('72 hours');
// You can compare them directly
if ($cdate < $udate) {
// And you can ask them to format nicely for display
echo("Date '".$cdate->format('d/m/Y h:i:sa')."' is before date '".
$udate->format('d/m/Y h:i:sa')."'\n");
}
您的代码比较日期有误,因为日期 returns 字符串。
试试这个:
$cdate = new DateTime();
$udate = new DateTime('72 hours');
if($udate > $cdate) {
echo 'something';
}
我在这里使用一个日期时间对象是这个
$cdate = date('d/m/Y h:i:sa')
另一个日期时间对象是这个
$udate = date("d/m/Y h:i:sa", strtotime("72 hours"));
为了比较我用的是这个条件
if($cdate >= $udate)
但问题是...在这种情况下,它只比较一天而不是整个日期和时间。
从 date()
返回的字符串仅在某些情况下具有可比性。您应该使用 DateTime()
其对象总是可比较的:
$cdate = new DateTime();
$udate = new DateTime('+3 days');
if($cdate >= $udate) {
}
if(strtotime($cdate) >= strtotime($udate)){
// your condition
}
希望对您有所帮助:)
date()
函数 returns 一个字符串 - 不是 DateTime 对象。因此,您正在进行的 >=
比较是 string 比较,而不是 dates/times.
如果您真的想进行字符串比较,请使用一种可以进行此类排序的格式,例如 ISO 8601。您可以使用格式 'c'.
轻松完成此操作然而,更好的方法是比较实际的 DateTime 对象或整数时间戳(例如您将从 time()
获得的内容)。
您不比较日期时间并且没有对象(如 OOP
) in your code. $cdate
and $udate
are strings,这就是使用字符串比较规则(即字典顺序)比较它们的原因。
您可以使用时间戳(即整数秒):
// Use timestamps for comparison and storage
$ctime = time();
$utime = strtotime("72 hours");
// Format them to strings for display
$cdate = date('d/m/Y h:i:sa', $ctime);
$udate = date('d/m/Y h:i:sa', $utime);
// Compare timestamps
if ($ctime < $utime) {
// Display strings
echo("Date '$cdate' is before date '$udate'.\n");
}
或者您可以使用 DateTime
:
$cdate = new DateTime('now');
$udate = new DateTime('72 hours');
// You can compare them directly
if ($cdate < $udate) {
// And you can ask them to format nicely for display
echo("Date '".$cdate->format('d/m/Y h:i:sa')."' is before date '".
$udate->format('d/m/Y h:i:sa')."'\n");
}
您的代码比较日期有误,因为日期 returns 字符串。
试试这个:
$cdate = new DateTime();
$udate = new DateTime('72 hours');
if($udate > $cdate) {
echo 'something';
}