比如说我有以下内容DateTime
:
DateTime date = new DateTime("2014-01-15")
现在我想保留年份和月份,但将日期设置为当前所在的星期几?
我已经找到了类似的帖子,但是这些假设以Datetime
今天为准,并且没有说明您可以为服装做些什么DateTime
。
可以通过以下方式完成while loop
:
public static DateTime GetFirstDayOfWeek(DateTime dayInWeek, CultureInfo cultureInfo)
{
DayOfWeek firstDay = cultureInfo.DateTimeFormat.FirstDayOfWeek;
DateTime firstDayInWeek = dayInWeek.Date;
while (firstDayInWeek.DayOfWeek != firstDay)
firstDayInWeek = firstDayInWeek.AddDays(-1);
return firstDayInWeek;
}
但是,这似乎有很多麻烦,我想知道是否有一个更简单的解决方案?
如果您真的想无while
周期地执行此操作,则可以使用一种有效的方法:
((7 + (int)date.DayOfWeek) - (int)weekStart) % 7
这是距weekStart
(对于您而言,DayOfWeek.Monday
)之后的天数。因此,您可以这样做:
return date.AddDays(-((7 + (int)date.DayOfWeek) - (int)DayOfWeek.Monday) % 7;
当然,请确保将其作为辅助方法。每次使用复杂的单行表达式时都要进行验证,这很烦人。
不过,while
除非您对日期做一些很奇怪的事情,否则该解决方案实际上并不会成为性能问题。您不应该真正去尝试(性能)优化不是处理瓶颈的代码。日期选择器通常不是瓶颈:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句