我有一个控件,您可以在其中将元素拖动到 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/