C# 如何得到4。下个月的星期三是DateTime吗?
我需要一个函数,它给我下个月的第n个日期时间。 我需要下个月的第四个星期三 我的代码传递了错误的日期:C# 如何得到4。下个月的星期三是DateTime吗?,c#,datetime,C#,Datetime,我需要一个函数,它给我下个月的第n个日期时间。 我需要下个月的第四个星期三 我的代码传递了错误的日期: private static DateTime FindNextDay(DayOfWeek dayOfWeek, DateTime fday, Int32 instance) { DateTime day = new DateTime(fday.Year, fday.Month, 1, fday.Hour, fday.Minute, fday.Second); // DateT
private static DateTime FindNextDay(DayOfWeek dayOfWeek, DateTime fday, Int32 instance)
{
DateTime day = new DateTime(fday.Year, fday.Month, 1, fday.Hour, fday.Minute, fday.Second);
// DateTime day is in this Example= 2014-08.01 11.00 AM
if (instance == 2)
{
day = day.AddDays(7);
}
else if (instance == 3)
{
day = day.AddDays(14);
}
else if (instance == 4) //if the 4th week is requested
{
day = day.AddDays(28); // i add 28 days
}
while (day.DayOfWeek != dayOfWeek)
{
day = day.AddDays(1); // and search the wednesday and return it back
}
return day;
}
您能给我看一个更好的解决方案吗?将最后一个选项更改为:
else if (instance == 4) //if the 4th week is requested
{
day = day.AddDays(21); // i add 28 days
}
您应该添加21天,而不是28天。将最后一天更改为:
else if (instance == 4) //if the 4th week is requested
{
day = day.AddDays(21); // i add 28 days
}
您应该添加21天,而不是28天。因为我太懒了,所以我编写的代码如下
DateTime firstDayOfNextMonth = new DateTime(2014, DateTime.Now.Month + 1, 1);
int count = 0;
if (firstDayOfNextMonth.DayOfWeek == DayOfWeek.Wednesday)
count = 1;
while (count != 4)
{
firstDayOfNextMonth = firstDayOfNextMonth.AddDays(1);
if (firstDayOfNextMonth.DayOfWeek == DayOfWeek.Wednesday)
count++;
}
Console.WriteLine(firstDayOfNextMonth);
基本上,我检查下个月的第一天是否是星期三,然后迭代我的日期时间找到4。下个月的星期三
它为今天工作,并打印下个月第四个星期三的2014年8月27日
您可以编写一个扩展方法,如
public static class DateTimeExtensions
{
public static void FindInstanceNextMonth(DateTime Now, DayOfWeek day, int instance)
{
DateTime firstDayOfNextMonth = new DateTime(Now.Year, Now.Month + 1, 1);
int count = 0;
if (firstDayOfNextMonth.DayOfWeek == day)
count = 1;
while (count != instance)
{
firstDayOfNextMonth = firstDayOfNextMonth.AddDays(1);
if (firstDayOfNextMonth.DayOfWeek == day)
count++;
}
Console.WriteLine(firstDayOfNextMonth);
}
}
并称之为
DateTimeExtensions.FindInstanceNextMonth(DateTime.Now,
DayOfWeek.Wednesday,
4);
因为我太懒了,所以我写的代码如下
DateTime firstDayOfNextMonth = new DateTime(2014, DateTime.Now.Month + 1, 1);
int count = 0;
if (firstDayOfNextMonth.DayOfWeek == DayOfWeek.Wednesday)
count = 1;
while (count != 4)
{
firstDayOfNextMonth = firstDayOfNextMonth.AddDays(1);
if (firstDayOfNextMonth.DayOfWeek == DayOfWeek.Wednesday)
count++;
}
Console.WriteLine(firstDayOfNextMonth);
基本上,我检查下个月的第一天是否是星期三,然后迭代我的日期时间找到4。下个月的星期三
它为今天工作,并打印下个月第四个星期三的2014年8月27日
您可以编写一个扩展方法,如
public static class DateTimeExtensions
{
public static void FindInstanceNextMonth(DateTime Now, DayOfWeek day, int instance)
{
DateTime firstDayOfNextMonth = new DateTime(Now.Year, Now.Month + 1, 1);
int count = 0;
if (firstDayOfNextMonth.DayOfWeek == day)
count = 1;
while (count != instance)
{
firstDayOfNextMonth = firstDayOfNextMonth.AddDays(1);
if (firstDayOfNextMonth.DayOfWeek == day)
count++;
}
Console.WriteLine(firstDayOfNextMonth);
}
}
并称之为
DateTimeExtensions.FindInstanceNextMonth(DateTime.Now,
DayOfWeek.Wednesday,
4);
像这样的
记下下下个月的第一天,当你找到一个星期三时,记下你遇到的添加到它的星期三的数量。当计数为4时返回
private static DateTime GetFourthWednesday()
{
DateTime firstOfMonth = new DateTime(DateTime.Now.AddMonths(1).Year, DateTime.Now.AddMonths(1).Month, 1);
int count = 0;
while (count < 4)
{
if (firstOfMonth.DayOfWeek == DayOfWeek.Wednesday)
{
count++;
}
if (count == 4)
{
return firstOfMonth;
}
firstOfMonth = firstOfMonth.AddDays(1);
}
return firstOfMonth;
}
private static DateTime GetFourthWednesday()
{
DateTime firstOfMonth=新的日期时间(DateTime.Now.AddMonths(1).Year,DateTime.Now.AddMonths(1).Month,1);
整数计数=0;
而(计数<4)
{
if(firstOfMonth.DayOfWeek==DayOfWeek.周三)
{
计数++;
}
如果(计数=4)
{
返回第一个月;
}
firstOfMonth=月初添加天数(1);
}
返回第一个月;
}
如果今天运行,则给出2014年8月27日
记下下下个月的第一天,当你找到一个星期三时,记下你遇到的添加到它的星期三的数量。当计数为4时返回
private static DateTime GetFourthWednesday()
{
DateTime firstOfMonth = new DateTime(DateTime.Now.AddMonths(1).Year, DateTime.Now.AddMonths(1).Month, 1);
int count = 0;
while (count < 4)
{
if (firstOfMonth.DayOfWeek == DayOfWeek.Wednesday)
{
count++;
}
if (count == 4)
{
return firstOfMonth;
}
firstOfMonth = firstOfMonth.AddDays(1);
}
return firstOfMonth;
}
private static DateTime GetFourthWednesday()
{
DateTime firstOfMonth=新的日期时间(DateTime.Now.AddMonths(1).Year,DateTime.Now.AddMonths(1).Month,1);
整数计数=0;
而(计数<4)
{
if(firstOfMonth.DayOfWeek==DayOfWeek.周三)
{
计数++;
}
如果(计数=4)
{
返回第一个月;
}
firstOfMonth=月初添加天数(1);
}
返回第一个月;
}
如果今天运行,给出了2014年8月27日的27
,您意外的输出是什么?您的问题是,您增加了28天来获得第四个星期三,但2014年8月的第四个星期三是第27个星期三是的,您应该添加21
,而不是28
。是的,21是正确答案。谢谢大家的帮助!!你意想不到的结果是什么?你的问题是你增加了28天来获得第四个星期三,但2014年8月的第四个星期三是第27个星期三是的,大概你应该增加21
,而不是28
。是的,21是正确的答案。谢谢大家的帮助!!天哪,我该怎么做,非常感谢。现在它向我展示了正确的dayomg,我怎样才能做到这一点,非常感谢。现在它告诉我正确的日子