c# - 自定义 DateTime 日长

标签 c#

我有一个控件,您可以在其中将元素拖动到 Gantt 中,例如 timetable。一天中的最低时间是 上午 8 点,而最高时间是 下午 4 点。有没有一种优雅的方法,我可以告诉 DateTime 结构采用这个时间间隔而不是 24 小时间隔

最佳答案

您当然不能更改 DateTime 现有方法的行为,但扩展方法在这里会派上用场。

根据您的要求,如果您将当前日期增加 8 小时,您希望日期向前移动 24 小时。 (如果我的理解不正确,请纠正我)。

您可以使用 AddWorkHours(或者可能是更适合您的命名约定的方法)创建扩展方法,这将需要小时数作为输入(例如 8),但实际上将 24 小时添加到当前日期。

代码如下所示。

public class DateTimeExtensions
{
    public static DateTime AddWorkHours(this DateTime dateTime, int workHours)
    {
        var workHoursPerday = 8; //Here 8 also can be configurable value if you have different working hours for different customer.
        var daysToAdd = (int) workHours/workHoursPerday; //You can have validation here to check if workHours are in exact multiplex of 8. 
        //Also you can have rounding off logic.
        dateTime.AddDays(daysToAdd);
    }
}

您只需要确保在正确的位置调用正确的方法即可。 我希望这至少能为解决您的问题提供一些思路。

关于c# - 自定义 DateTime 日长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41546156/

相关文章:

c# - 如何让 Newtonsoft 按原样反序列化日期并将其命名为 utc?

c# - ASP.NET Core 是否具有内置的 OAuth2 token 交换功能?

c# wmi - 检测多个 DIMM?

c# - 您是否缺少 using 指令或程序集引用? C# 错误

c# - 如果使用 Visual C++ Compiler November 2013 CTP,所有依赖项是否也需要用它编译?

c# - 在 C# 中创建对象时订阅事件

c# - 为什么我检测不到触摸屏?

c# - 按名称选择一个类字段,就好像它是一本字典?

c# - 将 JSON 对象反序列化为 C# 对象

c# - XAML 与在运行时创建的控件