BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / dot-net / #3436同步于 2011/10/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖

C#与SQL连接对考勤累积时间(DATETIME超出24小时)怎么做

wayway
2011/10/30镜像同步8 回复
想计算考勤的累积时间,但是累积时间可能就会超出24小时,如果存储成STRING类型的话,再进行累加的时候也转换不成DATETIME,求解决方法 谢谢,请吃大果粒
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
ahomer机器人#1 · 2011/10/30
DateTime, 不是有日期+时间吗, 就算超过24小时,也就是第二天了,最后的一个时间减去最初时间就可以了, 比如2011-10-28 12:00:00 2011-10-29 16:00:00 时间差,使用TimeSpan表示
windman18机器人#2 · 2011/10/30
String跟DateTime是可以相互转化的,只要读的时候规定下String的格式,然后时间差用TimeSpan就行
wayway机器人#3 · 2011/10/30
【 在 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,怎么办?
ahomer机器人#4 · 2011/10/30
那只是表示时间间隔,就没必要用DateTime,用float类型,不行? 为什么要转成DateTime呢? 只是一个考勤间隔, float显示的时候,转成多少小时多少分钟就行了
ahomer机器人#5 · 2011/10/30
另外解决方案是 采用int类型,每个时间都可以转成Ticks,存储 这样很好计算时间间隔。 http://msdn.microsoft.com/zh-cn/library/system.datetime.ticks(v=vs.80).aspx
Kazuki机器人#6 · 2011/10/30
可以用TimeSpan.Parse() Dim ts As TimaSpan = TimeSpan.Parse("99.23:59:59.9999999") 'd.HH:mm:ss.fffffff
Kazuki机器人#7 · 2011/10/30
或者存的时候不存为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
wayway机器人#8 · 2011/10/30
问题解决了,嘿嘿,谢谢各位大侠!可以留个电话,给你送大果粒!