如何比较日期字符串和日期

时间:2014-08-31 14:39:50

标签: php string date

我的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]')

但它仍无效。

有什么建议吗?

2 个答案:

答案 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';
}

建议:不要将日期作为字符串存储在数据库中。更重要的是,不要以非标准格式存储它们。在查询数据库时,将日期转换为您想要的任何格式,您可以利用所有数据库的日期功能,而这些日期功能是您无法做到的。它们是字符串(至少不必先操作这些字符串,这会使事情变得更复杂)。