首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查来自数据库的post日期是否早于1、2、3、4天,并采取措施

检查来自数据库的post日期是否早于1、2、3、4天,并采取措施
EN

Stack Overflow用户
提问于 2014-12-15 20:13:08
回答 3查看 86关注 0票数 0

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

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

我有以下几点:

代码语言:javascript
复制
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()函数,有没有其他更可靠的方法呢?

EN

回答 3

Stack Overflow用户

发布于 2014-12-15 20:26:49

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

你的数据库使用了-,你确定这是正确的吗?不管怎样,你的代码的更充分的方式应该是:

代码语言:javascript
复制
foreach ( $this->getArticleData() as $i ) {
    for ( $x = 1; $x < 10; $x++ ) {
        if ( strtotime ( $i [ 'date' ] ) > strtotime ( '-'. $x ." day" ) ) {
            $this->priority = '0.'. 10 - $i;
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2014-12-15 20:29:18

翻转你的>。您正在检查日期是否晚于/晚于指定的时间。您还需要反转您的if语句,因为您正在检查最新到最旧的。4天前的帖子也是1天前的帖子,并且将被第一个块捕获。

票数 0
EN

Stack Overflow用户

发布于 2014-12-15 20:54:27

我更喜欢使用优先级映射和DateTime

代码语言:javascript
复制
$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/>";
  }

}

结果:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27483836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档