在我的新闻剧本中,我将新闻整理为.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;\">• 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;\">• FROM EARLIER:</h3>";
}
else
{
echo '<a href="?module=news&read=' . $file . '"><h2 style="margin: 4px;">' . $file . "</h2></a>";
}
}
?>
答案 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"));