美好的一天
我正在尝试创建一个扩展方法,该方法将删除datetime内的Weekends。但这不能正常工作。
到目前为止,这是我的代码
kubectl apply -f customingress.yaml
我正在这里public static class DatetimeExtension
{
public static int RemoveWeekends(this DateTime date)
{
if (date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday)
{
date = date.AddDays(-1);
}
return date.Day;
}
}
有什么帮助吗?
答案 0 :(得分:1)
我怀疑它无法正常运行,因为如果一天是 Sunday ,则返回 Saturday ,因为您只扣除了一天。您可以采用的另一种方法是:
public static class DatetimeExtension
{
public static int RemoveWeekends(this DateTime date)
{
while(date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday)
{
date = date.AddDays(-1);
}
return date.Day;
}
}
即查看日期,继续前进1天,直到DayOfWeek
不在星期六或星期日为止。
如果通过此测试运行它:
var date = new DateTime(2019, 01, 13); // this is Sunday 13th January 2019
var result = date.RemoveWeekends();
它应该返回11
,即星期五,即明天。
但是,这有点低效,因为在星期日它会导致AddDays
被调用两次,从而导致创建两个新的DateTime
实例。没有此开销的版本将是:
public static int RemoveWeekends(this DateTime date)
{
switch (date.DayOfWeek)
{
case DayOfWeek.Saturday:
date = date.AddDays(-1);
break;
case DayOfWeek.Sunday:
date = date.AddDays(-2);
break;
}
return date.Day;
}