Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以C表示确认工作时间的TimeSpan#_C#_Timespan - Fatal编程技术网

C# 以C表示确认工作时间的TimeSpan#

C# 以C表示确认工作时间的TimeSpan#,c#,timespan,C#,Timespan,我需要一个考虑到工作时间的时间跨度。假设我们将TimeSpan配置为8小时一天,那么两天应该返回16个总小时,而不是48个小时。有人知道这样的班级吗 谢谢 编辑 我需要与timespan相同的功能,但具有可配置的日持续时间。加,减,…,应该考虑到这一点。我试着延长时间跨度,但它是密封的。也许我应该按照Oded的建议(或类似建议)使用一些扩展方法来实现这一点。如果您只想将每天计算为8个小时,您可以这样做: return TimeSpan.TotalHours / 3; 更新: 既然您提供了一些更

我需要一个考虑到工作时间的时间跨度。假设我们将TimeSpan配置为8小时一天,那么两天应该返回16个总小时,而不是48个小时。有人知道这样的班级吗

谢谢

编辑


我需要与timespan相同的功能,但具有可配置的日持续时间。加,减,…,应该考虑到这一点。我试着延长时间跨度,但它是密封的。也许我应该按照Oded的建议(或类似建议)使用一些扩展方法来实现这一点。

如果您只想将每天计算为8个小时,您可以这样做:

return TimeSpan.TotalHours / 3;
更新:

既然您提供了一些更详细的信息,我建议使用您自己的类型包装timespan—您可以在其中有一个
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; }}
}

这可以扩展以满足您的任何其他要求。

您是否考虑了诸如周一16:30到周二9:30之间的时间跨度(应为1小时)、周五9小时到周一9小时(8小时)、穆斯林世界的文化差异(周五是工作日而不是周日)、商业差异等示例(并不是所有的工作都在9小时开始和/或17小时结束),还有额外的信息,如加班和假期?@Carles-如果你想要一个更完整的解决方案(不管是什么意思),请提供一个更完整、更详细的问题。@Oded:我认为即使是从最初的问题开始,这个评论也是公平的。仅仅用小时除以3是行不通的(例如,“2天3小时”将返回为“17小时”,而不是“19小时”),并且不允许任何操作(同样,如果我在时间跨度上加上3小时,然后除以3,我只在原始跨度上加了一小时).@Dialogicus-时间跨度只是一个时间范围,它没有日历上下文。8小时是8小时,无论您尝试将其放在什么上下文中。很可能在您特别要求c#时没有用处,但以防万一:Excel支持您的要求。相关: