538 字
3 分钟
C# 获取常用时间范围:当天、当月、上月及本周的起止时间
获取当天0点0分0秒和23点59分59秒
// 获取当天0点0分0秒DateTime todayStart = DateTime.Now.Date;
// 获取当天23点59分59秒DateTime todayEnd = todayStart.AddDays(1).AddSeconds(-1);获取当月第一天0点0分0秒和最后一天23点59分59秒
// 获取当月第一天0点0分0秒DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
// 获取当月最后一天23点59分59秒DateTime lastDayOfMonth = firstDayOfMonth.AddMonths(1).AddDays(-1).AddSeconds(-1);获取上个月第一天0点0分0秒和最后一天23点59分59秒
// 获取上个月第一天0点0分0秒DateTime firstDayOfLastMonth = new DateTime(DateTime.Now.AddMonths(-1).Year, DateTime.Now.AddMonths(-1).Month, 1);
// 获取上个月最后一天23点59分59秒DateTime lastDayOfLastMonth = firstDayOfLastMonth.AddMonths(1).AddDays(-1).AddSeconds(-1);获取本周一0点0分0秒和本周日23点59分59秒
// 获取本周一0点0分0秒DateTime monday = DateTime.Now.AddDays(-((int)DateTime.Now.DayOfWeek - 1) % 7).Date;
// 获取本周日23点59分59秒DateTime sunday = monday.AddDays(6).AddSeconds(-1);代码说明:
-
当天0点0分0秒 (
todayStart):- 使用
DateTime.Now.Date获取当前日期的00:00:00。.Date方法会自动将时间部分置为00:00:00。
- 使用
-
当天23点59分59秒 (
todayEnd):- 通过在当天的0点0分0秒上加一天再减去一秒,得到当天的最后时刻。
-
当月第一天和最后一天:
- 利用
new DateTime(year, month, 1)获取某月的第一天,AddMonths(1)再加一个月后减去一天来获取该月的最后一天。
- 利用
-
上个月第一天和最后一天:
- 通过
AddMonths(-1)得到上个月,第一天使用new DateTime(year, month, 1),最后一天同样是通过AddMonths(1).AddDays(-1)来计算。
- 通过
-
本周一和本周日:
- 通过
DayOfWeek获取今天是周几,然后根据当前的DayOfWeek来推算本周一,最终通过加6天来获取周日。注意:DayOfWeek是从0(星期天)到6(星期六)编号,因此在计算时需要做适当的调整。
- 通过
小提示:
- 使用
DateTime.Now.Date是一个便捷的方式来获取日期部分,忽略时间部分。 AddDays()方法和AddMonths()方法是非常灵活的,可以用于日期的前移和后移。AddSeconds(-1)是将某个时间的秒数减去1,从而得到前一秒。
C# 获取常用时间范围:当天、当月、上月及本周的起止时间
https://sw.rscclub.website/posts/casharpqzsj/