我将如何在周三和下周周三的C#日期上周获得:
public Form1()
{
InitializeComponent();
CurrentDate.Text = "Today's Date: " + DateTime.Now.ToString("dd/MM/yyyy");
CurrentRent.Text = "Current Rent Date: "; // last wednesday
NextRent.Text = "Next Rent Date: "; // next wednesday
}
Run Code Online (Sandbox Code Playgroud)
Ser*_*rvy 34
要找到下周三,请继续添加天数直到找到.要查找上一个星期三,只需减去天数,直到找到一个.
DateTime nextWednesday = DateTime.Now.AddDays(1);
while (nextWednesday.DayOfWeek != DayOfWeek.Wednesday)
nextWednesday = nextWednesday.AddDays(1);
DateTime lastWednesday = DateTime.Now.AddDays(-1);
while (lastWednesday.DayOfWeek != DayOfWeek.Wednesday)
lastWednesday = lastWednesday.AddDays(-1);
Run Code Online (Sandbox Code Playgroud)
使用 AddDays 例程:
// increment by the number of offset days to get the correct date
DayOfWeek desiredDay = DayOfWeek.Wednesday;
int offsetAmount = (int) desiredDay - (int) DateTime.Now.DayOfWeek;
DateTime lastWeekWednesday = DateTime.Now.AddDays(-7 + offsetAmount);
DateTime nextWeekWednesday = DateTime.Now.AddDays(7 + offsetAmount);
Run Code Online (Sandbox Code Playgroud)
应该这样做!
注意:如果是星期一,“上个星期三”会给你发生的最后一个星期三,但“下星期三”会给你从现在起 9 天后的星期三!如果您想在两天内获得星期三,则需要使用“%”运算符。这意味着第二个“下周”语句将读取“(7 + offsetAmount) % 7”。
小智 7
您可以创建 2 个 DateTime Extension 方法,可与 DayOfWeek 参数一起使用:
public static class DateTimeExtension
{
public static DateTime GetPreviousWeekDay(this DateTime currentDate, DayOfWeek dow)
{
int currentDay = (int)currentDate.DayOfWeek, gotoDay = (int)dow;
return currentDate.AddDays(-7).AddDays(gotoDay-currentDay);
}
public static DateTime GetNextWeekDay(this DateTime currentDate, DayOfWeek dow)
{
int currentDay = (int)currentDate.DayOfWeek, gotoDay = (int)dow;
return currentDate.AddDays(7).AddDays(gotoDay - currentDay);
}
}
Run Code Online (Sandbox Code Playgroud)
然后可以按如下方式使用:
DateTime testDate = new DateTime(2017, 01, 21);
Console.WriteLine(testDate.GetPreviousWeekDay(DayOfWeek.Wednesday));
Console.WriteLine(testDate.GetNextWeekDay(DayOfWeek.Wednesday));
Run Code Online (Sandbox Code Playgroud)
DateTime.Now.AddDays(7)并且DateTime.Now.AddDays(-7)是你可以做算术,假设你是在周三.如果不是,那么您需要做的是使用该DayOfWeek属性来确定确定哪一天是"星期三"所需的天数(正数和负数).然后你可以将该值传递给AddDays.
例如,如果今天是星期二,你会AddDays(-6)在上周三和AddDays(8)下周三.
我会告诉你计算这些的任务.