确定一年的最后一天是否与下一年的第一天相同的一周中最简单的方法是什么?同年的最后一天与明年的第一天
回答
只需创建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
编辑:正如Groo指出的那样,本周的开始可能并不总是星期日。如果不是,那么您可以使其成为< = DayOfWeek.Saturday,或使用System.Globalization.CultureInfo.DateTimeFormat.FirstDayOfWeek + 7查找一周中的最后一天。
var lastDay = new DateTime(2009, 12, 31);
var firstDay = new DateTime(2010, 1, 1);
bool isSameWeek = (int)lastDay.DayOfWeek < (int)firstDay.DayOfWeek;
编辑:你没问,但我认为这是更有趣的计算,如果两个日期落在同一个星期内。这也适用于你的问题,但它也从更一般的意义上解决了这个问题。它通过计算每个日期的开始时间来计算,然后比较日期时间值的日期部分是否相同(以防万一不同时间传入每个日期)。
/// <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;
}
这很容易。如果最后一天不是星期天,那么明年的第一天必须在同一周!
当然,这取决于当你开始一周。
使用领域知识解决问题?给予好评! – 2009-10-29 14:30:14
如果最后一天是星期六怎么办?这不是说明年(星期日)的第一天不在同一周吗? (假设星期日是一周的第一天) – 2009-10-29 15:09:12
- 1. 第一天和最后一年的
- 2. mysql每年的同一天
- 3. 闰年的最后一天,第53或第1周?
- 4. SQL Server下一年的第一天?
- 5. 给周编号和年份找到星期的第一天和最后一天
- 6. 获取所选月份和年份的第一天和最后一天?
- 7. MySQL去年同一天
- 8. MonthCalendar1选定年份的第一天
- 9. 获得一个星期的第一天与最后一天
- 10. strtotime([月] [年]的第n天)
- 11. SQL从去年的同一天开始
- 12. 插入最后一天的第二天
- 13. 查找年度第一天(新年)的索引
- 14. 从sybase ase获得上一年的最后一天
- 15. Vb.net添加年,然后去月的最后一天
- 16. 得到今天的第一天,最后一天
- 17. HQL中的一年中的哪一天?
- 18. 获取第一天一个星期与NSDateComponents:改变今年
- 19. 一年有364天吗?
- 20. 从python的年份月份获取月份的最后一天
- 21. SAS:找到月份和年份的最后一天的日期
- 22. 生成每月的最后一天的序列两年
- 23. 本年度1月最后一天的表达式
- 24. 财政年度的最后一天(Ie 2017-03-31)
- 25. 在MySQL中找到去年的最后一天
- 26. python pandas查找timeseries.weekofyear的第一天和一年
- 27. DateTime今天25年后
- 28. 找到最后一个季度的第一天和最后一天在ORACLE
- 29. 设置从当年的第一天直到今年接下来的星期一的第一个星期
- 30. SQL SELECT每月的第一天和最后一天。
我想也许他的意思是同一周的数字。否则它会过于简单(:)尽管如此简单) – 2009-10-29 14:30:12
+1简单 – JustLoren 2009-10-29 14:30:13
如果你的星期从星期一开始,你可能想用'if(day <= DayOfWeek.Saturday)'。 – Groo 2009-10-29 14:36:58