c# - 在C#中获取当月的第一个日期和当月的最后一个日期
问题描述
需要帮助如何获取当月一周的第一个日期和最后一个日期。
低于我到目前为止所做的工作,但仍然适用于某些情况,特别是在开始日期和结束日期是星期天的情况下:
var givenDate = new DateTime(2018,4,1);
var intervalToStart = givenDate.DayOfWeek - DayOfWeek.Monday;
var startDate = givenDate.AddDays(-intervalToStart);
DateTime endDate;
int intervalToEnd = 0;
if (startDate.Month != givenDate.Month)
startDate = new DateTime(givenDate.Year, givenDate.Month, 1);
var dayOfWeekStartDate = startDate.DayOfWeek.ToString().ToLower();
switch (dayOfWeekStartDate)
{
case "sunday": intervalToEnd = 0;
break;
case "monday": intervalToEnd = 6;
break;
case "tuesday": intervalToEnd = 5;
break;
case "wednesday": intervalToEnd = 4;
break;
case "thursday": intervalToEnd = 3;
break;
case "friday": intervalToEnd = 2;
break;
case "saturday": intervalToEnd = 1;
break;
}
endDate = startDate.AddDays(intervalToEnd);
Console.WriteLine(startDate);
Console.WriteLine(endDate);
情况1:
给定日期:2018 年 5 月 5 日(星期六)
一周的第一个日期:2018 年 5 月 1 日(星期二)
一周的最后日期:208 年 5 月 6 日(星期日)
案例二:
给定日期:2018 年 5 月 9 日(星期三)
一周的第一个日期:2018 年 5 月 7 日(星期一)
一周最后一天:2018 年 5 月 13 日(星期日)
案例3:
给定日期:2018 年 4 月 1 日(星期日)
一周的第一个日期:2018 年 4 月 1 日(星期日)
一周的最后日期:2018 年 4 月 1 日(星期日)
案例4:
给定日期:2018 年 6 月 2 日(星期六)
一周的第一个日期:2018 年 6 月 1 日(星期五)
一周的最后日期:2018 年 6 月 3 日(星期日)
概念或答案受到高度赞赏。
先感谢您。
解决方案
如果星期一将落入上个月,您想返回该月的第一天吗?
public static Tuple<DateTime, DateTime> GetFirstAndLastWeekDate(DateTime dt, DayOfWeek firstDayOfWeek = DayOfWeek.Monday)
{
int diff = (7 + (dt.DayOfWeek - firstDayOfWeek)) % 7;
DateTime firstDay = dt.AddDays(-1 * diff).Date;
DateTime lastDay = firstDay.AddDays(6);
if (dt.Month != firstDay.Month)
{
firstDay = new DateTime(dt.Year, dt.Month, 1);
}
return Tuple.Create(firstDay, lastDay);
}
推荐阅读
- android - 我使用 OTP 的 Firebase 身份验证不起作用
- ios - 如何从设备连接到 Stripe 服务器?
- python - 如何在 Python 中将输入数据存储到多个矩阵中?
- c++ - UWP C++/CX:当前系统时间和秒表
- java - 无法将 super 关键字作为参数传递给 java 中的方法
- css - 如何自定义 Wordpress 登录页面的背景?
- jquery - 如何使用 datepicker 在 Angular 5 应用程序中验证日期?
- php - 如何通过连接表检索组中的记录取决于MAX?
- c# - Android Xamarin - 检索存储在 imageview 中的图像
- c - C Web 服务器分段故障