一年的最后一天与明年的第一天相同

Rod*_*Rod 0 c# calendar

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

Phi*_*ppe 7

这很容易.如果最后一天不是星期天,那么明年的第一天必须在同一周!

当然,这取决于你何时开始一周.

  • 使用领域知识解决问题?给予好评! (2认同)

Bob*_*Bob 5

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

bool isSameWeek = (int)lastDay.DayOfWeek < (int)firstDay.DayOfWeek;
Run Code Online (Sandbox Code Playgroud)

编辑:你没有问这个,但我认为计算两个日期是否在同一周内更有意思.这也适用于您的问题,但它也可以更广泛地解决问题.它的工作原理是计算每个日期的星期开始,然后比较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;
}
Run Code Online (Sandbox Code Playgroud)