主要是运用timespan来控制 ,这里先要说说timespan的用法,timespan的定义规则如下:
[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
其中方括号里[ ]的是可选的选项,冒号和句号(:与。)是必需要的原义字符,需要从花括号{}里由竖线( |)里任选一项,其它的项如下说明:
项
|
说明
|
ws
|
可选的空白
|
"-"
|
可选的减号,指示负
TimeSpan
|
d
|
天,范围从
0 到 10675199
|
hh
|
小时,范围从
0 到 23
|
mm
|
分钟,范围从
0 到 59
|
ss
|
可选的秒,范围从
0 到 59
|
ff
|
可选的秒的小数部分,有
1 到 7 个小数位
|
s 的分量必须整体指定大于或等于
MinValue 并小于或等于 MaxValue 的时间间隔。
举个例子如下:
比如你要设定间隔时间为14天的话,就是
14,就格式就是 14.00:00:00
或者 6.21:22:33代表是6天21点22小时33秒
下面我就来实现防止刷新的办法,
private static string updateTime = "1";//这里代表一天的时间
private string Pretime="2006-12-5 11:59:07";//上次刷新的时间
private datetime currenttime=datetime.now;//当前时间
if(currenttime.Subtract(DateTime.Parse(Pretime))>DateTime.Parse(updateTime))
{
//调用刷新代码
}
另外一个求得时间间隔的函数,
//求得两个日期之间的时间间隔
private double DateDiff(string howtocompare, DateTime date1, DateTime date2)
{
double diff = 0;
TimeSpan TS = new TimeSpan(date2.Ticks - date1.Ticks);
switch (howtocompare.ToLower())
{
case "year":
diff = Convert.ToDouble(TS.TotalDays / 365);
break;
case "month":
diff = Convert.ToDouble((TS.TotalDays / 365) * 12);
break;
case "day":
diff = Convert.ToDouble(TS.TotalDays);
break;
case "hour":
diff = Convert.ToDouble(TS.TotalHours);
break;
case "minute":
diff = Convert.ToDouble(TS.TotalMinutes);
break;
case "second":
diff = Convert.ToDouble(TS.TotalSeconds);
break;
}
return diff;
}
private double DateDiff(string howtocompare, DateTime date1, DateTime date2)
{
double diff = 0;
TimeSpan TS = new TimeSpan(date2.Ticks - date1.Ticks);
switch (howtocompare.ToLower())
{
case "year":
diff = Convert.ToDouble(TS.TotalDays / 365);
break;
case "month":
diff = Convert.ToDouble((TS.TotalDays / 365) * 12);
break;
case "day":
diff = Convert.ToDouble(TS.TotalDays);
break;
case "hour":
diff = Convert.ToDouble(TS.TotalHours);
break;
case "minute":
diff = Convert.ToDouble(TS.TotalMinutes);
break;
case "second":
diff = Convert.ToDouble(TS.TotalSeconds);
break;
}
return diff;
}