<p><em>(这个解决方案是用PHP编写的——但我想,您可以直接从命令行使用某种grep或任何东西来实现)</em></p>
<p>考虑到您的日期是<code>YYYY-MM-DD</code>格式,并且它们位于每行的开头,您只需按字母顺序比较行就可以比较日期。在</p>
<p>一种解决办法是:</p>
<ul>
<li>加载字符串</li>
<li>按行分解</li>
<li>删除第一行</li>
<li>重复这些行,只保留您感兴趣的行</li>
</ul>
<p>对于第一部分:</p>
<pre><code>$str = <<<STR
date,test,time,avail
2009-09-01,JS,0.119,99.90
2009-09-02,JS,0.154,99.89
2009-09-03,SWF,0.177,99.90
2009-09-04,SWF,0.177,99.90
2009-09-05,SWF,0.177,99.90
2009-09-06,SWF,0.177,99.90
2009-09-07,SWF,0.177,99.90
2009-09-08,SWF,0.177,99.90
2009-09-09,SWF,0.177,99.90
2009-09-10,SWF,0.177,99.90
STR;
$lines = explode(PHP_EOL, $str);
unset($lines[0]); // first line is useless
</code></pre>
<p>并且,为了迭代这些行,过滤掉你想要的/不想要的,你可以使用foreach循环。。。或者使用<a href="http://php.net/array_filter" rel="nofollow noreferrer">^{<cd2>}</a>函数,它只为这个而存在;-)</p>
<p>例如,您可以使用以下内容:</p>
^{pr2}$
<p>你的回调函数是:</p>
<pre><code>function my_filter($line) {
$min = '2009-09-04';
$max = '2009-09-09';
if ($line >= $min && $line <= $max) {
return true;
} else {
return false;
}
}
</code></pre>
<p>结果是:</p>
<pre><code>array
4 => string '2009-09-04,SWF,0.177,99.90' (length=26)
5 => string '2009-09-05,SWF,0.177,99.90' (length=26)
6 => string '2009-09-06,SWF,0.177,99.90' (length=26)
7 => string '2009-09-07,SWF,0.177,99.90' (length=26)
8 => string '2009-09-08,SWF,0.177,99.90' (length=26)
</code></pre>
<p>希望这有帮助;—)</p>
<p><br/>
如果日期不是<code>YYYY-MM-DD</code>格式,或者不是在每一行的开头,则必须<a href="http://php.net/explode" rel="nofollow noreferrer">^{<cd4>}</a>行,并使用<a href="http://php.net/strtotime" rel="nofollow noreferrer">^{<cd5>}</a><em>(或者根据格式进行一些自定义分析)</em>,然后比较时间戳。在</p>
<p>但是,对你来说。。。不需要这些;—)</p>