奇怪的Access + c# 时间问题

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

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

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

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

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

 

None.gif private  System.DateTime arrivetime  =  DateTime.MaxValue.Date;
None.gif
ExpandedBlockStart.gifContractedBlock.gif     
/**/ /// <summary>
None.gif       //  t or get field ARRIVETIME value 
ExpandedBlockStart.gifContractedBlock.gif
      /**/ /// </summary>
None.gif       public   int  ARRIVETIME
ExpandedBlockStart.gifContractedBlock.gif     
dot.gif {
InBlock.gif         
get
ExpandedSubBlockStart.gifContractedSubBlock.gif         
dot.gif{
InBlock.gif
InBlock.gif             
return this.arrivetime.Hour * 60 + this.arrivetime.Minute;
ExpandedSubBlockEnd.gif         }

InBlock.gif         
set
ExpandedSubBlockStart.gifContractedSubBlock.gif         
dot.gif{
InBlock.gif             
int min = value;
InBlock.gif             arrivetime 
= new DateTime ( 9999,12,31, min / 60,min % 60 ,0);             
ExpandedSubBlockEnd.gif         }

ExpandedBlockEnd.gif     }

在报表中使用上述字短时是经过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 ?

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

郁闷~~~
 

 

转载于:https://www.cnblogs.com/huangzhenwu/archive/2007/04/27/730136.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值