我的SQL中有一个字段。例如:
field : expireddate type : varchar (10)
它将包含$ expireddate = 31/08/2014等数据,我会将其与今天的日期进行比较
$today = date("d/m/Y");
if ($query['expireddate']<$today){
echo 'expired date';
}
else
{
echo 'uptodate';
}
但它不起作用。我试图将字符串转换为日期:
$expireddate=strtotime('d/m/Y','$query[expireddate]')
但它仍无效。
有什么建议吗?
答案 0 :(得分:0)
但是,如果你只是替换&#34; /&#34;用&#34; - &#34;它会工作正常。
<?php
$expireddate = "31/08/2014";
$today = date("d/m/Y");
$expireddate=strtotime(str_replace('/', '-', $expireddate));
$today=strtotime(str_replace('/', '-', $today));
if ($expireddate<$today){
echo 'expired date';
}
else
{
echo 'uptodate';
}
?>
答案 1 :(得分:0)
不需要替换字符串中的字符或使用不建议用于日期数学的strtotime()
。 PHP内置了一些工具,旨在简化这类工作。
您应该使用DateTime()
个对象,因为它们具有可比性。但是,您将遇到的一个问题是您的日期格式不是标准格式。使用/
作为分隔符时,PHP将采用MM / DD / YYYY格式。因此,您需要使用DateTime::createFromFormat()
来克服此问题。
$today = new DateTime();
$expires = DateTime::createFromFormat('d/m/Y', $query['expireddate']);
if ($expires < $today){
echo 'expired date';
}
else {
echo 'uptodate';
}
建议:不要将日期作为字符串存储在数据库中。更重要的是,不要以非标准格式存储它们。在查询数据库时,将日期转换为您想要的任何格式,您可以利用所有数据库的日期功能,而这些日期功能是您无法做到的。它们是字符串(至少不必先操作这些字符串,这会使事情变得更复杂)。