如果日期是当前的-10天,则视为新标题

时间:2013-12-01 02:55:19

标签: php

在我的新闻剧本中,我将新闻整理为.txt文件,在每个新闻文件的开头有[20.03.13](例如)日期格式。

我需要一个小IF来检查日期是否有X天数(例如-10)。 如果是这样,它将被添加到最新消息中。 现在它设置为IF日期=今天的日期,添加到最新消息。

如何将其转换为如果日期在距离今天的日期10天内较小的情况,回复...然后我们可以将FROM TODAY行更改为LATEST。

这是代码,谢谢。 顺便说一下,请尽量减少我脚本中的更改。我花了一段时间来写它并理解它...我不是那么好,有时peopl重写很多你,不要付出太多的努力我会感谢任何帮助给予,只要它的工作:)再次感谢< / p>

<?
$files = array();
if($handle = opendir( 'includes/news' )) {
    while( $file = readdir( $handle )) {
        if ($file != '.' && $file != '..') {
            // let's check for txt extension
            $extension = substr($file, -3);
            // filename without '.txt'
            $filename = substr($file, 0, -4);
            if ($extension == 'txt')
                $files[] = $filename; // or $filename
        }
    }
    closedir($handle);
}
rsort($files);
foreach ($files as $file)
{
    // get post date
    $postdate = substr($file, 0, 10);
    // get todays date
    $todaysdate = date("[d.m.y]");

    if($postdate == $todaysdate)
    {
        echo "<h3 style=\"border-bottom: 1px solid #fff;\">&bull; FROM TODAY:</h3>";
        echo "<a href=\"?module=news&read=$file\"><h2 style=\"background:url('images/h2today.jpg') no-repeat;\">$file</h2></a>";
        echo "<h3 style=\"border-bottom: 1px solid #fff;\">&bull; FROM EARLIER:</h3>";
    }
    else
    {
        echo '<a href="?module=news&read=' . $file . '"><h2 style="margin: 4px;">' . $file . "</h2></a>";
    }

}

?>

4 个答案:

答案 0 :(得分:1)

使用http://php.net/manual/en/function.strtotime.php

$date = "[20.5.13]";
$date = strtotime(str_replace('.', '-', str_replace ( '[' , '' , str_replace ( ']' , '' , $date))))

if((time() - (60*60*24*10)) > $date) {
  //do something
}else{
  //do something else
}

答案 1 :(得分:1)

好吧,首先让我们将日期转换为标准格式,然后将其转换为Unix时间戳:

 $postdate = substr($file, 0, 10);

 //Removing the '[' ']' characters...
 $postdate = str_replace(array('[', ']'), '', $postdate);

 //Splitting the date into an array
 $postdate = explode('.', $postdate);

 //Now we have an array with this format: array(0 => 'day', 1 => 'month', 2 => 'year');

 //Let's convert the year to 20xx (two thousand and blabla)...
 $postdate[2] = '20'.$postdate[2]; //You'll have to change this line in 87 years =D

 //Now we join our date array in a string with the following format: Y-m-d
 $postdate = implode('-', array_reverse($postdate)); //We have to reverse the array because 'year' comes first.

 //And now we convert the date to Unix timestamp
 $postdate = strtotime($postdate);

 //And finally we can check if the post time is bigger or equal than [now minus 10 days]:

 $time_now = time();

 if (($time_now - (3600*24*10)) <= $postdate)
 {
     //Passed, the rest of my script goes here
 }
 else //(Optional)
 {
     //The news has been posted more than 10 days ago
 }

就是这样!祝你好运。

我希望我没有错过任何事情:)

答案 2 :(得分:1)

// get post date
$postdate = substr($file, 0, 10);  // 20.03.13
// get todays date
$todaysdate = date("[d.m.y]");  // 20.03.13

可能很难检查这些日期更大或更重要的日期。但是如果你把它们转换成unixtimestamp那就完成了

这将是你的IF声明

if( (timestamp_today - numberof seconds in 10 days ) < timestamp_posted) { your code goes here }

lemme帮助你获得这些时间戳记

今天的时间戳 - 使用时间()函数你得到它

发布日期时间戳 - mktime(小时,分钟,秒,月,日,年)

在您的案例中,发布日期为[20.03.13],因此红豆杉必须将日期,月份,年份分开。

 //Removing the '[' ']' characters..
 $postdate = str_replace(array('[', ']'), '', $postdate);
//Splitting the date into an array
$postdate = explode('.', $postdate);

现在使用mktime(0,0,0,$postdate[0],$postdate[1],$postdate[2])

但请确保放置参数。

答案 3 :(得分:0)

strtotime可以为您提供帮助(http://php.net/manual/en/function.strtotime.php)。这将使用您正在使用的[d.m.y]格式10天前格式化日期:

$todaysdate = date("[d.m.y]",strtotime("10 days ago"));