Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置过期,在php中无效?_Php - Fatal编程技术网

如何设置过期,在php中无效?

如何设置过期,在php中无效?,php,Php,我在定义有有效期的产品时遇到问题。我想设置一个产品,该产品无效(当$now=date(“d-M-y”)超过$valid=date(“d-M-y”,strotime('+.$day.'days',strotime($date));) 过期(当$now=date(“d-M-y”)超过$due=date(“d-M-y”,strotime('-30天),strotime('-30天),strotime($valid));和$now=date(“d-M-y”)小于$valid=date(“d-M-y”,s

我在定义有有效期的产品时遇到问题。我想设置一个产品,该产品无效(当
$now=date(“d-M-y”)
超过
$valid=date(“d-M-y”,strotime('+.$day.'days',strotime($date));

过期(当
$now=date(“d-M-y”)
超过
$due=date(“d-M-y”,strotime('-30天),strotime('-30天),strotime($valid));
$now=date(“d-M-y”)
小于
$valid=date(“d-M-y”,strotime('+.$day.'days',strotime($date));

valid(当
$now=date(“d-M-y”)
小于
$valid=date(“d-M-y”,strotime('+'.$day.'days',strotime($date));

这是我的代码:

if ($due > $now && $now > $valid )
{
$vendor ='<td style="color:red;text-align: center;font-weight: bold">'.$rowpur['ven_code'].' (Overdue)</td>';   
}
elseif ($due > $now && $now < $valid )
{
$vendor ='<td style="color:red;text-align: center;font-weight: bold">'.$rowpur['ven_code'].' (Not Valid)</td>'; 
}       
else 
{
$vendor = '<td style="text-align: center;font-weight: bold">'.$rowpur['ven_code'].'</td>';  
}
if($due>$now&$now>$valid)
{
$vendor='.$rowpur['venu code'.](过期)';
}
elseif($到期>$now&&$now<$valid)
{
$vendor='.$rowpur['venu code'.](无效)';
}       
其他的
{
$vendor='.$rowpur['venu code'].';
}
结果就像截图一样:


但是所有供应商代码必须无效

您不能通过基本来比较日期。原因是它们是对象。可以通过调用对象上的timestamp()方法来表示日期。这将返回一个整数,可以用经典的方式进行比较。

您可能还想提到在实际日期对象上使用date_diff。您可以比较php DateTime对象。但我认为这些是字符串(日期的结果,对吗?),它们没有按预期工作。@Nanne这确实是一个更准确的解释。谢谢。请小心你选择的名字。像
valid
这样的名称可能意味着一个布尔值,即某个值是否有效。这当然不意味着要约会。更好的名称应该是
validUntil
。您还可以混合使用
到期日期
过期日期
,这两种情况并不相同。如果要以字符串形式比较日期,则它们需要采用正确的可排序格式
d-M-y
不是一个,因为字符串比较是从左到右逐字符进行的,所以这一天将是这里的第一个“标准”,这意味着
2015年7月21日
将被视为比
2019年7月7日
更大。月份名称根本不适合进行适当的排序。如果要将日期作为字符串进行排序/比较,则需要使用YYYY-MM-DD或类似格式。@misorude,我选择您的选项。非常感谢您的帮助。