当前位置:  开发笔记 > 编程语言 > 正文

计算前一周的开始和结束日期

如何解决《计算前一周的开始和结束日期》经验,为你挑选了3个好方法。

在C#中计算前一周的开始和结束日期的最佳方法是什么?即今天3月18日将导致3月9日(上周一)和3月15日(上周日).

我已经看到使用DayOfWeek和switch语句来完成偏移,但是想知道是否有更优雅的方式.



1> bstoney..:

您可以跳过while循环并使用

DateTime mondayOfLastWeek = date.AddDays( -(int)date.DayOfWeek - 6 );

这假设您使用星期一作为一周的第一天.


不错的单线方法.我认为无论其运行的日期如何,以下内容都会有效:mondayOfLastWeek = DateTime.Now.AddDays( - (int)DateTime.Now.DayOfWeek - 6); sundayOfLastWeek = DateTime.Now.AddDays( - (int)DateTime.Now.DayOfWeek);
要回答这个问题,startOfWeek应该命名为sundayOfLastWeek."DateTime mondayOfLastWeek = date.AddDays( - (int)date.DayOfWeek - 6);"

2> mqp..:
DayOfWeek weekStart = DayOfWeek.Monday; // or Sunday, or whenever
DateTime startingDate = DateTime.Today;

while(startingDate.DayOfWeek != weekStart)
    startingDate = startingDate.AddDays(-1);

DateTime previousWeekStart = startingDate.AddDays(-7);
DateTime previousWeekEnd = startingDate.AddDays(-1);

阅读:Backtrack一天一次,直到我们在本周开始,然后减去七到达上周的开始.



3> Simon..:

使用Fluent DateTime https://github.com/FluentDateTime/FluentDateTime

var dateTime = 1.Weeks().Ago();
var monday = dateTime.Previous(DayOfWeek.Sunday);
var sunday = dateTime.Next(DayOfWeek.Sunday);

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有