我有这个
$fecha_actual = strtotime('now');
$fechaactual = date("d/m/Y",$fecha_actual);
$fechatope = $fila1['fechatope'];
if($fechatope < $fechaactual) {
echo "Fecha Actual: $fechaactual y Fecha Tope: $fechatope ";
}
我获得的结果:
Fecha Actual: 03/10/2018 y Fecha Tope: 03/02/2019
当if
大于$fechatope
时为什么要输入$fechaactual
?
我不明白...
答案 0 :(得分:1)
尝试将它们与
进行比较strtotime($fechatope) < strtotime($fechaactual)
通过这种方式,它只比较整数,错误几率就较小。
答案 1 :(得分:1)
在PHP中,date
函数返回一个字符串。因此,您的变量$fechaactual
是 string
"03/10/2018"
现在我猜你的变量$fechatope
是 string
"03/02/2019"
如果您进行字符串比较,则$fechaactual
更大!
这就是为什么如今大多数程序员都不使用特定于国家/地区的日期格式的原因。如果要比较字符串,请使用国际日期格式,ISO 8601,而不是国家/地区的特定格式。 ISO 8601允许对字符串进行排序,因为它是YYYY-MM-DD。日优先或月优先的格式不利于编程。 (咆哮的结尾!:))
或者,您可以比较日期对象本身,也可以将每个日期缩短为一个纪元时间。
日期很难。
答案 2 :(得分:1)
尝试一下
$fecha_actual = strtotime('now');
$fechaactual = date("d/m/Y",$fecha_actual);
$fechatope = date("d/m/Y",strtotime($fila1['fechatope']));
if($fechatope < $fechaactual) {
echo "Fecha Actual: $fechaactual y Fecha Tope: $fechatope ";
}
答案 3 :(得分:1)
date() 返回一个字符串。因此,您正在比较一个字符串是否小于另一个字符串(我假设第二个参数的类型,因为我们看不到)。
在PHP中将字符串与 << / strong>和> 进行比较时,有许多特殊规则。它将根据字母顺序比较字符串。如果字符串以数字开头,则该数字将用于比较,依此类推。
无论如何,这很可能不是您的期望。
无论哪种方式,您都可以将两个时间都转换为数字形式的时间戳,并且可以像在代码中进行比较。或者,您可以将字符串变成 DateTime 对象,然后使用 DateTime::diff 函数或 << / strong>,< strong >> 和 == 比较日期。
答案 4 :(得分:1)
假设您有一个字符串03/02/2019
,并且要将其与当前时间进行比较:
$fechaactual = new DateTime(); // current date and time
$fechatope = DateTime::createFromFormat("m/d/Y|", "03/02/2019"); // 2019-03-02 00:00:00
var_dump($fechaactual < $fechatope); // true
var_dump($fechaactual == $fechatope); // false (warning: dont use ===)
var_dump($fechaactual > $fechatope); // false
这个解决方案看起来比其他解决方案复杂得多,但用途最广泛。只要您知道所涉及的日期格式,就不会有任何歧义。
答案 5 :(得分:0)
这是因为在给定的示例中,相比之下,Fecha Tope比Fecha Actual小。
为什么?
因为您的日期格式。想象一下PHP代码计算出一个日期是否大于另一个日期。通过像整数一样进行计算来实现。
所以让我们将日期转换为整数:
Fecha Actual = 03102018
Fecha Tope = 03022019
现在,因为您的日期格式设置为日,月,年-年份之间的差异并不重要,因为这将是我们整数值中的最小单位。而一天的差异会导致最大的单位变化。
如果重新组织代码,并且从现在开始使用“ Y-m-d”,则在比较日期时将避免此问题。
答案 6 :(得分:0)
由于 date()返回一个字符串,因此您必须对其进行格式化。您还需要遵守时间的编程标准,即Y-m-d,而不是您所在国家/地区的标准。
假设您要从数据库中获取另一个日期(与之比较的日期),则还必须使用 strtotime()函数将该字符串格式化为时间格式。
示例:
$dateExample=date('d/m/Y'); // your date() string
$format = "d/m/Y"; // current string format to change.
$timedate = DateTime::createFromFormat($format, $dateExample); //creates the format and changes the string to a dateTime object.
$dateExample = $timedate->format('Y-m-d'); //perform the format, changing the standard to Y-m-d format.
$anotherDateFromDataBase = $row['dateColumn']; //date variable fetched from the database
$anotherDateFromDataBase = strtotime($anotherDateFromDataBase); //converts the string to time
您现在可以比较两个日期。
if($anotherDateFromDataBase < $dateExample) {
//do something
}