我需要一个考虑到工作时间的TimeSpan。假设如果我们将TimeSpan配置为每天8小时,两天应该返回16小时而不是48小时。有人知道这样的课程吗?TimeSpan承认C的工作时间#
谢谢。
编辑
我需要相同的功能,但时间跨度与配置的一天时间。加,减,......应该考虑到这一点。我试图扩展TimeSpan,但它是封闭的。也许我应该去一些扩展方法来实现这个Oded建议(或类似的)。
我需要一个考虑到工作时间的TimeSpan。假设如果我们将TimeSpan配置为每天8小时,两天应该返回16小时而不是48小时。有人知道这样的课程吗?TimeSpan承认C的工作时间#
谢谢。
编辑
我需要相同的功能,但时间跨度与配置的一天时间。加,减,......应该考虑到这一点。我试图扩展TimeSpan,但它是封闭的。也许我应该去一些扩展方法来实现这个Oded建议(或类似的)。
如果你只是想每天要弄清楚为8个小时,你可以这样做:
return TimeSpan.TotalHours/3;
更新:
现在,你提供了一些更详细,我建议包装时间跨度与您自己的类型 - 你可以有一个HoursInWorkingDay
属性,它可以让你配置一个工作日的小时数。
有一个构造函数,需要一个时间跨度,并分配到可用于计算的私人时间跨度:
public class WrappedTimeSpan
{
private TimeSpan ts;
private int hoursInDay = 8;
public WrappedTimeSpan(TimeSpan origTS)
{
ts = origTs;
}
public WrappedTimeSpan(TimeSpan origTS, int hoursInDay) : this(origTs)
{
hoursInDay = hoursInDay;
}
public int HoursInDay { get;}
public int WorkingHours { get { return ts.TotalHours/hoursInDay; }}
}
这可以扩展以满足您有任何其他要求。
很短,很容易和很好+1 – 2010-10-22 10:05:16
我一直在寻找更多完整的解决方案... – 2010-10-22 10:09:50
你是否考虑过例如周一16:30和周二9:30(应该产生1小时),周五9h和周一9h(8h),跨文化差异在穆斯林世界(星期五是周日而不是周日),商业差异(并非所有工作都在9小时开始和/或在17小时结束)以及额外的信息比如加班和假期? – Dialecticus 2010-10-22 10:10:19
大多数情况下,您可能没有特别注意c#的用途,但以防万一:Excel支持您的要求。 – 2010-10-22 12:36:57
相关:http://stackoverflow.com/questions/3492958/how-can-a-timespan-day-last-only-for-8-hours – 2010-10-22 16:53:53