2013-03-19 139 views
1

我目前建立一个系统有管理员工timein和超时的一部分,我要计算这个为了得到计算工作时间

***night shift (Must Work 8 Hr)*** 
    startTime- 10.00 PM 
    endTime- 06.00 AM 

所以我想计算实际工作时该日期(timein - 时间到)。我所做的是

TimeSpan duration = DateTime.Parse(endTime).Subtract(DateTime.Parse(startTime)); 

输出:16:00

我要的是8:00

如2

startTime-晚上10点
endTime-上午05点00分

推销员:7:00

我该如何做到这一点?

+1

你需要在开始和结束时间以及时间有一个日期,而不仅仅是一个时间。 – 2013-03-19 07:17:05

回答

1

您必须使用datetime以及两次之间的确切小时数。因为你会有不同的日期。假设换班开始于2013年3月18日晚上10:00,结束2013年3月19日5:00 AM

+0

Adil对不起,我不明白你说什么可以请解释使用代码段 – pradeep 2013-03-19 06:35:08

+0

你可以显示startTime和endTime的确切值吗? – Adil 2013-03-19 06:47:31

0

尝试使用Timespan like;

DateTime a = new DateTime(2008, 01, 02, 23, 30, 00); 
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00); 

TimeSpan duration = b - a; 

Console.WriteLine(duration); 

输出将是

07:00:00 

这里是一个DEMO

一个TimeSpan对象表示作为的 天,小时,分钟,秒和秒的分数的正或负号所测量的时间间隔(时间或 经过时间的持续时间)。

+0

@pradeep每次都不能这样做,只有当endTime小于开始时间(时间跨越午夜) – Axarydax 2013-03-19 06:37:57

+0

@Axarydax我认为你把这个评论写到了错误的地方:) – 2013-03-19 06:42:12

+0

我觉得他已经在使用Timespan了;我认为错误在于他如何构建原始日期。 – 2013-03-19 07:16:04