如何确定某个日期是否位于当前星期的日期之间?

use*_*948 2 c#

在 C# 中,

我们如何检查特定日期与周内日期?

例如:2014 年 6 月 2 日

当前几周:2014年2月2日 - 2014年2月8日

所以这个日期是在上周......

Ati*_*ris 5

使用它进行检查(如果您希望从 fromDate 开始始终是 1 周,则最后一个参数是可选的,则不需要使用最后一个参数):

 public static bool DateInside(DateTime checkDate, 
     DateTime fromDate, DateTime? lastDate = null)
 {
     DateTime toDate = lastDate != null ? lastDate.Value : fromDate.AddDays(6d);
     return checkDate >= fromDate && checkDate <= toDate;
 }
Run Code Online (Sandbox Code Playgroud)

调用使用:

bool isDateInside = DateInside(new DateTime(2014, 02, 06), 
     new DateTime(2014, 02, 02)); // return true
Run Code Online (Sandbox Code Playgroud)

首先搜索:)答案也在这里:How to check if C# DateTime is under a range

如果您想检查日期是否在同一周内,那么您可以使用以下命令:

public static bool DateInsideOneWeek(DateTime checkDate, DateTime referenceDate)
{
    // get first day of week from your actual culture info, 
    DayOfWeek firstWeekDay = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;
    // or you can set exactly what you want: firstWeekDay = DayOfWeek.Monday;
    // calculate first day of week from your reference date
    DateTime startDateOfWeek = referenceDate;
    while(startDateOfWeek.DayOfWeek != firstWeekDay)
    { startDateOfWeek = startDateOfWeek.AddDays(-1d); }
    // fist day of week is find, then find last day of reference week
    DateTime endDateOfWeek = startDateOfWeek.AddDays(6d);
    // and check if checkDate is inside this period
    return checkDate >= startDateOfWeek && checkDate <= endDateOfWeek;
}
Run Code Online (Sandbox Code Playgroud)

我的文化信息中的实际周从 2014 年 2 月 3 日星期一开始(所以对我来说是 2 月 3 日到 2 月 9 日之间的一周)。如果我检查今天(2014 年 2 月 6 日)的参考日期(第二个参数)的任何日期,我会得到以下结果:

For 2014-Feb-02 (Sunday before this week): false
For 2014-Feb-03 (Monday inside this week): true
For 2014-Feb-06 (Today  inside this week): true
For 2014-Feb-09 (Sunday inside this week): true
For 2014-Feb-10 (Monday next        week): false
Run Code Online (Sandbox Code Playgroud)

您可以调用此方法来检查一个日期是否与参考日期在同一周内,如下所示:

DateInsideOneWeek(new DateTime(2014, 02, 02), new DateTime(2014, 02, 06));
Run Code Online (Sandbox Code Playgroud)

您可以使用以下代码查找本周的开始和结束日期

DateTime startDateOfWeek = DateTime.Now.Date; // start with actual date
while(startDateOfWeek.DayOfWeek != DayOfWeek.Monday) // set first day of week in your country
{ startDateOfWeek = startDateOfWeek.AddDays(-1d); } // after this while loop you get first day of actual week
DateTime endDateOfWeek = startDateOfWeek.AddDays(6d); // you just find last week day
Run Code Online (Sandbox Code Playgroud)

这是你想要的吗?