今天,一个项目中,测试发现报表中时间运算后有部分刚好相差一分钟的错误。
郁闷,全部代码都是一样的,怎么会有的没错,有的却相差一分钟呢?
找阿找,跟踪时间保持的每个细节,终于发现问题了。
原来是这样的:
---说明---
数据库为Access,安装Office版本为2003,但为了使用原因,特意定义Access数据库为2000格式。
数据库设计中某字段ArriveTime为Access短日期格式。目的是存储总分钟数。
在C# 中使用如下代码保存和使用。
/**/ /// <summary>
// t or get field ARRIVETIME value
/**/ /// </summary>
public int ARRIVETIME
{
get
{
return this.arrivetime.Hour * 60 + this.arrivetime.Minute;
}
set
{
int min = value;
arrivetime = new DateTime ( 9999,12,31, min / 60,min % 60 ,0);
}
}
在报表中使用上述字短时是经过Access视图完成上述转换(取Hour和Min时间运算)后出现了本文开始描述的错误。
对数据跟踪,发现我保存的如9分钟,到Access里面被存为“9999-12-31 0:8:59”,但用c#取出在界面上操作时,从返回的arrivetime为“9999-12-31 00:09:00”所有计算都总是对的。
但上面变成减去1秒后的时间并不是每个数据都发生。
搞不明白为什么会出现~~~~ ????
最后,我使用arrivetime = new DateTime ( 9999,12,31, min / 60,min % 60 ,3); 故意多出3秒解决这个问题。
虽然问题暂时解决了,还是很疑惑,Why? What's WRONG ?
发到微软新闻组去问问~~~
郁闷~~~