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);

代码说明:#

  1. 当天0点0分0秒 (todayStart):

    • 使用DateTime.Now.Date获取当前日期的00:00:00。.Date方法会自动将时间部分置为00:00:00。
  2. 当天23点59分59秒 (todayEnd):

    • 通过在当天的0点0分0秒上加一天再减去一秒,得到当天的最后时刻。
  3. 当月第一天和最后一天:

    • 利用new DateTime(year, month, 1)获取某月的第一天,AddMonths(1)再加一个月后减去一天来获取该月的最后一天。
  4. 上个月第一天和最后一天:

    • 通过AddMonths(-1)得到上个月,第一天使用new DateTime(year, month, 1),最后一天同样是通过AddMonths(1).AddDays(-1)来计算。
  5. 本周一和本周日:

    • 通过DayOfWeek获取今天是周几,然后根据当前的DayOfWeek来推算本周一,最终通过加6天来获取周日。注意:DayOfWeek是从0(星期天)到6(星期六)编号,因此在计算时需要做适当的调整。

小提示:#

  • 使用DateTime.Now.Date是一个便捷的方式来获取日期部分,忽略时间部分。
  • AddDays()方法和AddMonths()方法是非常灵活的,可以用于日期的前移和后移。
  • AddSeconds(-1)是将某个时间的秒数减去1,从而得到前一秒。
C# 获取常用时间范围:当天、当月、上月及本周的起止时间
https://sw.rscclub.website/posts/casharpqzsj/
作者
杨月昌
发布于
2016-07-18
许可协议
CC BY-NC-SA 4.0