C# 一年的最后一天与下一年的第一天在同一周

C# 一年的最后一天与下一年的第一天在同一周,c#,calendar,C#,Calendar,确定一年的最后一天是否与下一年的第一天在同一周的最简单方法是什么 var lastDay = new DateTime(2009, 12, 31); var firstDay = new DateTime(2010, 1, 1); bool isSameWeek = (int)lastDay.DayOfWeek < (int)firstDay.DayOfWeek; 编辑:你没有问这个问题,但我认为计算两个日期是否在同一周内更有趣。这也适用于你的问题,但它也解决了更一般意义上的问题。它的

确定一年的最后一天是否与下一年的第一天在同一周的最简单方法是什么

var lastDay = new DateTime(2009, 12, 31);
var firstDay = new DateTime(2010, 1, 1);

bool isSameWeek = (int)lastDay.DayOfWeek < (int)firstDay.DayOfWeek;
编辑:你没有问这个问题,但我认为计算两个日期是否在同一周内更有趣。这也适用于你的问题,但它也解决了更一般意义上的问题。它的工作原理是计算每个日期的周初,然后比较DateTime值的日期部分是否相同,以防每个日期传入不同的时间

/// <summary>
/// Determines whether two dates fall in the same week span.
/// </summary>
/// <param name="left">The left DateTime to compare.</param>
/// <param name="right">The right DateTime to compare.</param>
/// <returns>
/// </returns>
public bool IsSameWeek(DateTime left, DateTime right) {
    return AreDatePartsEqual(GetStartOfWeek(left), GetStartOfWeek(right));
}

/// <summary>
/// Gets the start of week.
/// </summary>
/// <param name="date">The date.</param>
/// <returns></returns>
public DateTime GetStartOfWeek(DateTime date) {
    return date.AddDays(-1 * (int)date.DayOfWeek);
}

/// <summary>
/// Compares two DateTimes using only the Date Part for equality
/// </summary>
/// <param name="left">The left DateTime to compare.</param>
/// <param name="right">The right DateTime to compare.</param>
/// <returns></returns>
public bool AreDatePartsEqual(DateTime left, DateTime right) {
    return
        left.Day == right.Day &&
        left.Month == right.Month &&
        left.Year == right.Year;
}

只需为12月31日创建一个DateTime对象。如果不是星期六,那么1月1日必须在同一周内

DayOfWeek day = new DateTime(someYear, 12, 31).DayOfWeek;
if(day < DayOfWeek.Saturday)
   // January 1st must be within the same week

编辑:正如格罗指出的,一周的开始可能并不总是周日。如果不是,那么你可以让它变得非常简单。如果最后一天不是星期天,那么明年的第一天必须在同一周


当然,这取决于你开始这一周的时间。

我想也许他指的是同一周的数字。如果你的一周从周一开始,你可能想用ifday,如果最后一天是周六呢?这不意味着明年的第一天星期天不在同一周吗?假设星期天是一周的第一天