C# 请教 计算日期出错
本帖最后由 XXTK 于 2024-4-28 21:02 编辑DateTime dt = DateTime.Now;//当前时间
DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d")));//本周周一
今天是4.28星期天.这个星期的星期一应该是4.22。但计算的结果却成了4.29,好像代码也没有问题 你调试加点代码看看是year是几几年? jyjjf 发表于 2024-4-28 20:50
你调试加点代码看看是year是几几年?
重新编辑了请看图片 有没有可能老外的周一实际是一周的第二天呢?例如周日才是一周的第一天。 wkfy 发表于 2024-4-28 21:04
有没有可能老外的周一实际是一周的第二天呢?例如周日才是一周的第一天。
应该是这个导致的 wkfy 发表于 2024-4-28 21:04
有没有可能老外的周一实际是一周的第二天呢?例如周日才是一周的第一天。
没有深研过毕竟业余爱好 XXTK 发表于 2024-4-28 21:10
没有深研过毕竟业余爱好
gpt的代码示例:
using System;
class Program
{
static void Main()
{
DateTime currentDate = DateTime.Now;
DayOfWeek dayOfWeek = GetDayOfWeek(currentDate);
string dayOfWeekString = GetDayOfWeekString(dayOfWeek);
Console.WriteLine($"Today is {dayOfWeekString}.");
}
static DayOfWeek GetDayOfWeek(DateTime date)
{
// 获取星期几的值,其中 Sunday = 0,Monday = 1,以此类推
int dayOfWeekValue = (int)date.DayOfWeek;
// 将星期日的值调整为 7,以便与假设星期一是第一天的情况相匹配
if (dayOfWeekValue == 0)
dayOfWeekValue = 7;
return (DayOfWeek)dayOfWeekValue;
}
static string GetDayOfWeekString(DayOfWeek dayOfWeek)
{
switch (dayOfWeek)
{
case DayOfWeek.Monday:
return "Monday";
case DayOfWeek.Tuesday:
return "Tuesday";
case DayOfWeek.Wednesday:
return "Wednesday";
case DayOfWeek.Thursday:
return "Thursday";
case DayOfWeek.Friday:
return "Friday";
case DayOfWeek.Saturday:
return "Saturday";
case DayOfWeek.Sunday:
return "Sunday";
default:
throw new ArgumentException("Invalid day of week.");
}
}
} jyjjf 发表于 2024-4-28 21:10
应该是这个导致的
但逻辑上说不过去老外的28号也应该是星期天,它是以4.28这个日期进行计算的 XXTK 发表于 2024-4-28 21:21
但逻辑上说不过去老外的28号也应该是星期天,它是以4.28这个日期进行计算的
excel的weekday函数就有星期几是第一天的类型参数设置 static void Main(string[] args)
{
//DateTime dt = DateTime.Now;//当前时间
//DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d")));//本周周一
//今天是4.28星期天.这个星期的星期一应该是4.22。但计算的结果却成了4.29,好像代码也没有问题
DateTime today = DateTime.Today;
int dayOfWeek = today.DayOfWeek - DayOfWeek.Sunday;
DateTime lastMondayDate = today.AddDays(dayOfWeek == 0 ? -6 : -1);
Console.WriteLine(lastMondayDate.Date);
}