C# 在C中获取某个日期时间的周一和周日#
例如,我有一个日期“2010-11-09,星期四” 现在我想得到星期一和星期天的日期时间,其中包含上述日期C# 在C中获取某个日期时间的周一和周日#,c#,date,C#,Date,例如,我有一个日期“2010-11-09,星期四” 现在我想得到星期一和星期天的日期时间,其中包含上述日期 您将如何执行此操作?类似这样的操作,当然您希望在DateTime.MaxValue之前的某个时间点中断循环,但这应该可以: DateTime dt = DateTime.Parse("2010-11-09, Thuesday"); while (dt < DateTime.MaxValue) { if(dt.DayO
您将如何执行此操作?类似这样的操作,当然您希望在DateTime.MaxValue之前的某个时间点中断循环,但这应该可以:
DateTime dt = DateTime.Parse("2010-11-09, Thuesday");
while (dt < DateTime.MaxValue)
{
if(dt.DayOfWeek == DayOfWeek.Sunday || dt.DayOfWeek == DayOfWeek.Monday)
Console.WriteLine(dt.ToString());
dt.AddDays(1);
}
DateTime dt=DateTime.Parse(“2010-11-09,星期四”);
while(dt
日期时间周一=
DateTime.Now.AddDays((DateTime.Now.DayOfWeek
-1)*-1)日期
日期时间星期日=
DateTime.Now.AddDays(7
-DateTime.Now.DayOfWeek.Date
这可能就是你想要的:
DateTime date = DateTime.Today;
// lastMonday is always the Monday before nextSunday.
// When date is a Sunday, lastMonday will be tomorrow.
int offset = date.DayOfWeek - DayOfWeek.Monday;
DateTime lastMonday = date.AddDays(-offset);
DateTime nextSunday = lastMonday.AddDays(6);
编辑:由于lastmanday
并不总是顾名思义(参见注释),下面的一行可能更切题:
DateTime nextSunday = date.AddDays(7 - (int) date.DayOfWeek);
如果您使用条件方法,这很容易
if (v_datetime.DayOfWeek== DayOfWeek.Sunday)
{
return true;
}
if (v_datetime.DayOfWeek== DayOfWeek.Monday)
{
}
//
///返回输入日的特定星期日。
///
///输入日。
///0是星期一,6是星期天。
///
公共静态DateTime GetDayOfWeekOfSpecific(DateTime输入,int dayOfWeek)
{
if(input.DayOfWeek==DayOfWeek.Sunday)
{
星期一-=7;
}
//上星期一总是下星期一之前的星期一。
//今天是星期天,最后一个星期一就是明天。
int offset=input.DayOfWeek-DayOfWeek.Monday;
DateTime lastMonday=input.AddDays(-offset);
DateTime nextDayOfWeek=上周一。AddDays(dayOfWeek);
下星期五返回;
}
@Lisa;你是说你想把星期一和星期天的日期定在星期二的那一周?@Beemer:按照惯例,这一周从星期天开始是行不通的。@Hank;是的。OP可能希望检索从星期二开始的星期日。只要我们不知道他们到底想要什么,任何逻辑都是可能的。请用海报“灯”来检查下面的答案。@Henk,我的意思是在周一和周日之间。@Lisa:我想是的,但日期是文化相关定义和惯例的同义词。清晰是值得的。很好的解决方案,比我的干净多了。这有两个错误,星期一有一个打字错误。AddDays。。星期一应使用小写字母“m”。同样,从周一到周日,你需要增加6天而不是7天。添加七天后,将出现下一个星期一。这还有另一个错误。如果今天是星期天,它将在下周一返回(偏移量=-1),而不是上周一。强制转换为整数周日将返回0,周一将返回1,因此周日-周一=-1。添加此行将修复它:offset=(offset<0)?6:偏移量@gijswijs-你说得对,但请注意,上周一是作为中间日期的,我的代码确实为周日生成了正确的下周日(-1+6=+7)。因此,事后看来,上周一的名字很糟糕。我认为这在周日不起作用。你明天和下个星期天不去吗?今天(星期天)不去吗?(0-1)*-1=1,7-0=7。请更新您的答案,以提供原始问题的完整答案,而不仅仅是回复某人的评论。
/// <summary>
/// Returns the day that is the specific day of week of the input day.
/// </summary>
/// <param name="input">The input day.</param>
/// <param name="dayOfWeek">0 is Monday, 6 is Sunday.</param>
/// <returns></returns>
public static DateTime GetDayOfWeekOfSpecific(DateTime input, int dayOfWeek)
{
if(input.DayOfWeek == DayOfWeek.Sunday)
{
dayOfWeek -= 7;
}
// lastMonday is always the Monday before nextSunday.
// When today is a Sunday, lastMonday will be tomorrow.
int offset = input.DayOfWeek - DayOfWeek.Monday;
DateTime lastMonday = input.AddDays(-offset);
DateTime nextDayOfWeek = lastMonday.AddDays(dayOfWeek);
return nextDayOfWeek;
}