Lar*_*ard 10 c# datetime c#-4.0
假设我在表格中有一个日期列表.现在我想找到所有行,它们与作为参数提供的日期在同一周.
假设我有一张桌子:
而且我给这个函数提供了参数2014-09-09,它必须从星期一 - >星期日看,并且意识到09-11和09-12是本周的一部分,但不是09-15.
怎么解决这个问题呢?
我曾考虑检查年,月和周数,但你无法保证月份是一样的......
那么你如何解决这样的问题呢?
Spa*_*row 13
DxCk的评论是有效的.即使一年的第一周或最后一周跨越两个不同的年份,此解决方案仍然有效:
检查两个日期的一周的第一天是否在同一天.这是代码:
private bool DatesAreInTheSameWeek(DateTime date1, DateTime date2)
{
var cal = System.Globalization.DateTimeFormatInfo.CurrentInfo.Calendar;
var d1 = date1.Date.AddDays(-1 * (int)cal.GetDayOfWeek(date1));
var d2 = date2.Date.AddDays(-1 * (int)cal.GetDayOfWeek(date2));
return d1 == d2;
}
Run Code Online (Sandbox Code Playgroud)
为什么不?
bool AreFallingInSameWeek(DateTime date1, DateTime date2)
{
return date1.AddDays(-(int)date1.DayOfWeek) == date2.AddDays(-(int)date2.DayOfWeek);
}
Run Code Online (Sandbox Code Playgroud)
如果您想使用星期日以外的任何一天作为一周的开始
bool AreFallingInSameWeek(DateTime date1, DateTime date2, DayOfWeek weekStartsOn)
{
return date1.AddDays(-GetOffsetedDayofWeek(date1.DayOfWeek, (int)weekStartsOn)) == date2.AddDays(-GetOffsetedDayofWeek(date2.DayOfWeek, (int)weekStartsOn));
}
int GetOffsetedDayofWeek(DayOfWeek dayOfWeek, int offsetBy)
{
return (((int)dayOfWeek - offsetBy + 7) % 7)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8648 次 |
| 最近记录: |