从数据库中直接导出的文本(数据的日期范围及服务次数):
2 2003-07-19 2003-08-18
10 2004-03-22 2004-03-22
9 2005-11-05 2005-11-05
4 2006-10-01 2008-10-31
18 2007-01-01 2009-07-15
想把其中的服务次数累加到每一天上去,本来想用sql直接处理,结果没有想到什么好的方法,只好请小李写了一个脚本来处理:
<?php
$file_handle = fopen("./water-time-service.txt", "r");
$arr = array();
$index = 0;
while (!feof($file_handle)) {
$index ++;
$line = fgets($file_handle);
$times = (int)mb_substr($line,0,2,"UTF-8");
$date_start = trim(mb_substr($line,2,11,"UTF-8"));
$date_end = trim(mb_substr($line,13,11,"UTF-8"));
$end_day = strtotime($date_end);
$days = round((strtotime($date_end) - strtotime($date_start)) / (3600*24)) + 1;
$_thisline = array();
for(;;)
{
if($days < 1)
{
break;
}
$_thisline[] = date("Y-m-d",$end_day - ($days - 1) * (3600 * 24));
$days --;
}
foreach($_thisline as $v)
{
@$arr[$v] += $times;
}
}
fclose($file_handle);
foreach($arr as $n=>$v) echo $n. " ". $v."\r\n";
?>
这样就能处理成这样的结果:
2003-07-19 2
2003-07-20 2
2003-07-21 2
2003-07-22 2
2003-07-23 2
然后就可以用gnuplot画图了。
发表回复