今天,一个项目中,测试发现报表中时间运算后有部分刚好相差一分钟的错误。

郁闷,全部代码都是一样的,怎么会有的没错,有的却相差一分钟呢?

找阿找,跟踪时间保持的每个细节,终于发现问题了。

原来是这样的:
---说明---
数据库为Access,安装Office版本为2003,但为了使用原因,特意定义Access数据库为2000格式。
数据库设计中某字段ArriveTime为Access短日期格式。目的是存储总分钟数。

在C# 中使用如下代码保存和使用。

 

private System.DateTime arrivetime = DateTime.MaxValue.Date;

     
/// <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 ?

发到微软新闻组去问问~~~ 

郁闷~~~