簡體   English   中英

檢查 DateTime 是否大於 C#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM