(This solution is in PHP -- but you can probably do that directly from the command-line, I suppose, with somekind of grep or anything)
Lütfen tarihleri YYYY-MM-DD
biçiminde ve bunlar her satırın başında olduğu, sadece tarihleri karşılaştırmak için alfabetik satırları karşılaştırmak zorunda göz önüne alındığında.
: Bir çözüm olacaktır
- dize yüklenemedi
- hatlarla patlayabilir
- ilk satırı kaldırın
- Eğer sadece bu o ilgi tutarak, çizgileri üzerinde yineleme
İlk parçalar için:
$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
Ve, / isteyenler istemiyorum / çıkış filtreleme, hatları üzerinde yineleme, bir foreach döngüsü kullanabilirsiniz ... Ya da sadece için var array_filter
a> işlevini kullanabilirsiniz Bu ;-)
Örneğin, bu gibi bir şey kullanabilirsiniz:
$new_lines = array_filter($lines, 'my_filter');
var_dump($new_lines);
Ve geri arama fonksiyonu olacaktır:
function my_filter($line) {
$min = '2009-09-04';
$max = '2009-09-09';
if ($line >= $min && $line <= $max) {
return true;
} else {
return false;
}
}
Ve, sonuç:
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)
Umarım bu yardımcı olur ;-)
If your dates where not in the YYYY-MM-DD
format, or not at the beginning of each line, you'd have to explode
the lines, and use strtotime
(or do some custom parsing, depending on the format), and, then, compare timestamps.
Ama, senin durumunda ... Tüm bu gerek yok ;-)