返回信息流想计算考勤的累积时间,但是累积时间可能就会超出24小时,如果存储成STRING类型的话,再进行累加的时候也转换不成DATETIME,求解决方法
谢谢,请吃大果粒
这是一条镜像帖。来源:北邮人论坛 / dot-net / #3436同步于 2011/10/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖
C#与SQL连接对考勤累积时间(DATETIME超出24小时)怎么做
wayway
2011/10/30镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
DateTime, 不是有日期+时间吗,
就算超过24小时,也就是第二天了,最后的一个时间减去最初时间就可以了,
比如2011-10-28 12:00:00
2011-10-29 16:00:00
时间差,使用TimeSpan表示
【 在 ahomer 的大作中提到: 】
: DateTime, 不是有日期+时间吗,
: 就算超过24小时,也就是第二天了,最后的一个时间减去最初时间就可以了,
: 比如2011-10-28 12:00:00
: ...................
嗯,不是我的意思是,如果第一天签到时间为08:00:00,签出时间为23:00:00
第一天的累积时间为15:00:00
第二天也是如此,比如累积时间为12:00:00
继续
算出一周总共的考勤时间,就会超过24:00:00
就不能将string类型转换成datetime类型,就没法用timespan,怎么办?
那只是表示时间间隔,就没必要用DateTime,用float类型,不行?
为什么要转成DateTime呢? 只是一个考勤间隔,
float显示的时候,转成多少小时多少分钟就行了
另外解决方案是 采用int类型,每个时间都可以转成Ticks,存储
这样很好计算时间间隔。
http://msdn.microsoft.com/zh-cn/library/system.datetime.ticks(v=vs.80).aspx
可以用TimeSpan.Parse()
Dim ts As TimaSpan = TimeSpan.Parse("99.23:59:59.9999999")
'd.HH:mm:ss.fffffff
或者存的时候不存为HH:mm:ss的格式,而是存成使用小数表示的小时格式(TimeSpan.TotalHours()),然后读出的时候用TimeSpan.FromHours()
Dim ts As TimaSpan = TimeSpan.FromHours("123456.7898765")
【 在 Kazuki 的大作中提到: 】
: 可以用TimeSpan.Parse()
: Dim ts As TimaSpan = TimeSpan.Parse("99.23:59:59.9999999")
: 'd.HH:mm:ss.fffffff