检查数据库日期的帖子是否早于1,2,3,4天,并采取措施

时间:2014-12-15 12:13:08

标签: php

我正在尝试检查存储在数据库中的帖子是否分别早于1,2,3,最后4天。

存储所有帖子的表格都有一个日期字段。我有一个查询检索日期,然后我尝试分别检查日期是否超过1,2,3和4天,并根据我想在页面上移动帖子的结果。

我有以下内容:

foreach($this->getArticleData() as $i)
{
    if(strtotime($i['date']) > strtotime('-1 day'))
    {
        $this->priority = '0.9';
    }
    elseif(strtotime($i['date']) > strtotime('-2 day'))
    {
        $this->priority = '0.8';
    }
    elseif(strtotime($i['date']) > strtotime('-3 day'))
    {
        $this->priority = '0.7';
    }
    else(strtotime($i['date']) > strtotime('-4 day'))
    {
        $this->priority = '0.6';
    }
}

我不认为代码工作正常。在某些情况下,优先事项是错误的。我是使用srttotime()函数还有另一种更可靠的方法吗?

3 个答案:

答案 0 :(得分:0)

Forward slash (/) signifies American M/D/Y formatting, a dash (-) signifies European D-M-Y and a period (.) signifies ISO Y.M.D.

您的数据库使用了 - ' s,您确定对吗?无论如何,更好的代码方式是:

foreach ( $this->getArticleData() as $i ) {
    for ( $x = 1; $x < 10; $x++ ) {
        if ( strtotime ( $i [ 'date' ] ) > strtotime ( '-'. $x ." day" ) ) {
            $this->priority = '0.'. 10 - $i;
        }
    }
}

答案 1 :(得分:0)

翻转你的>。您正在检查日期是否比指定时间更长/更新。您还需要翻转if声明,因为您需要检查最新到最旧的声明。一个4天大的帖子也是1天,将被第一个区块抓住。

答案 2 :(得分:0)

我更喜欢使用优先级地图和DateTime

$list = array(
  array( 'date' => '2014-12-14' ) ,
  array( 'date' => '2014-12-15' ) ,
  array( 'date' => '2014-12-14' ) ,
  array( 'date' => '2014-12-11' ) ,
  array( 'date' => '2014-12-14' ) ,
  array( 'date' => '2014-12-13' ) ,
);

# maps days to priority
$priorities = array(
  1 => 0.9,
  2 => 0.8,
  3 => 0.7,
  4 => 0.6
);

$currentDate = new DateTime();

foreach( $list as $i ) {

  $dateTime = new DateTime( $i['date'] );
  $diff = $currentDate->diff( $dateTime );
  $days = $diff->format( '%d' );

  if( isset( $priorities[ $days ] ) ){
    echo 'Date is: ' . $i['date'] . "| Difference is : " . $days . "| Priority is: " . $priorities[ $days ]. "<br/>";
  }

}

结果:

Date is: 2014-12-14| Difference is : 1| Priority is: 0.9
Date is: 2014-12-14| Difference is : 1| Priority is: 0.9
Date is: 2014-12-11| Difference is : 4| Priority is: 0.6
Date is: 2014-12-14| Difference is : 1| Priority is: 0.9
Date is: 2014-12-13| Difference is : 2| Priority is: 0.8