Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中获取某个日期时间的周一和周日#_C#_Date - Fatal编程技术网

C# 在C中获取某个日期时间的周一和周日#

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

例如,我有一个日期“2010-11-09,星期四”

现在我想得到星期一和星期天的日期时间,其中包含上述日期


您将如何执行此操作?

类似这样的操作,当然您希望在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;
}