[英]Check DateTime is greater than C#
我正在嘗試輸出包含結束日期的日期序列。 由於某些原因,如果開始日期的日部分大於結束日期的日部分,則不包括結束日期。 下面是我的帶有示例輸出的代碼,
static void Main(string[] args)
{
var StartDate = DateTime.Parse("06/28/2019");
var EndDate = DateTime.Parse("09/27/2019");
var Daily = 1;
for (var i = EndDate; i > StartDate; i = i.AddMonths(Daily))
{
// Get the first of each month
int month = i.Month;
int year = i.Year;
var FirstDay = new DateTime(year, month, 1);
// Get the difference between first day and first Friday
int difference = (int)DayOfWeek.Monday - (int)FirstDay.DayOfWeek;
int adddays = difference > 0 ? 21 : 28;
int days = difference + adddays;
var ForthTues = FirstDay.AddDays(days);
Console.WriteLine(ForthTues);
}
}
上面的代碼將給出輸出
6/24/2019
7/22/2019
8/26/2019
但如果我將日期更改為以下,
var StartDate = DateTime.Parse("06/27/2019");
var EndDate = DateTime.Parse("09/28/2019");
我得到了我正在尋找的正確輸出
6/24/2019
7/22/2019
8/26/2019
9/23/2019
將您的代碼轉換為非區域特定的內容,並稍作調整,您似乎想要的內容如下:-
var StartDate = new DateTime(2019, 6, 28);
var EndDate = new DateTime(2019, 9, 27);
var startMonth = StartDate.AddDays(1 - StartDate.Day);
var endMonth = EndDate.AddDays(1 - EndDate.Day);
for (var i = startMonth; i <= endMonth; i = i.AddMonths(1))
{
int difference = (int)DayOfWeek.Monday - (int)i.DayOfWeek;
int addDays = difference >= 0 ? 21 : 28;
int days = difference + addDays;
var fourthTuesday = i.AddDays(days);
if (fourthTuesday <= EndDate )
Console.WriteLine(fourthTuesday);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.