C# 获取N年第N周第N天日期
static void Main(string[] args)
{
//2022年第46周第6天
string dateStr = "24606";
//年
int year = int.Parse(DateTime.Now.Year.ToString().Substring(0, 3) + dateStr.Substring(0, 1));
//N周
int weekIndex = int.Parse(dateStr.Substring(1, 2));
//获取N周第一天
DateTime weekOfFirstDay = GetWeekFirstDay(year, weekIndex);
//当前N周第N天
int weekOfDay = int.Parse(dateStr.Substring(3, 2));
//获取N周N天日期
DateTime date = weekOfFirstDay.AddDays(weekOfDay);
Console.ReadKey();
}
/// <summary>
/// 获取N周的第一天(以星期日开始计算)
/// </summary>
/// <param name="year">当前年</param>
/// <param name="weekIndex">第N周</param>
/// <returns></returns>
public static DateTime GetWeekFirstDay(int year, int weekIndex)
{
int allDays = (weekIndex - 1) * 7;
//确定当年第一天
DateTime firstDate = new DateTime(year, 1, 1);
int firstDayOfWeek = (int)firstDate.DayOfWeek;
if (firstDayOfWeek == 0)
{
firstDayOfWeek = 1;
}
else if (firstDayOfWeek == 6)
{
firstDayOfWeek = 7;
}
//周开始日(按星期日为第一天计算)
int startAddDays = allDays + (0 - firstDayOfWeek);
DateTime weekStart = firstDate.AddDays(startAddDays);
return weekStart;
}
/// <summary>
/// 获取N周日期范围
/// </summary>
/// <param name="year">年</param>
/// <param name="weekIndex">N周</param>
/// <returns></returns>
public static string GetWeekRange(int year, int weekIndex)
{
try
{
if (weekIndex < 1)
{
throw new Exception("请输入大于0的整数");
}
int allDays = (weekIndex - 1) * 7;
//确定当年第一天
DateTime firstDate = new DateTime(year, 1, 1);
int firstDayOfWeek = (int)firstDate.DayOfWeek;
firstDayOfWeek = firstDayOfWeek == 0 ? 7 : firstDayOfWeek;
//周开始日
int startAddDays = allDays + (0 - firstDayOfWeek);
DateTime weekRangeStart = firstDate.AddDays(startAddDays);
//周结束日
int endAddDays = allDays + (6 - firstDayOfWeek);
DateTime weekRangeEnd = firstDate.AddDays(endAddDays);
if (weekRangeStart.Year > year ||
(weekRangeStart.Year == year && weekRangeEnd.Year > year))
{
throw new Exception("今年没有第" + weekIndex + "周。");
}
return string.Format("{0}~{1}", weekRangeStart.ToString("yyyy/MM/dd"), weekRangeEnd.ToString("yyyy/MM/dd"));
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
本文来自博客园,作者:字母搬运工-Hauk,转载请注明原文链接:https://www.cnblogs.com/hauk0755/articles/18454676

浙公网安备 33010602011771号