【问题标题】:Compare two dates with a range比较两个日期和一个范围
【发布时间】:2013-09-30 13:07:47
【问题描述】:

是否有可能以这种格式比较两个日期.. 例如今天“2013 年 9 月 30 日”和一周前“2013 年 9 月 22 日” 如果它在这个范围内,说“好”,如果年龄大,那么说“不好” 我怎样才能在 C# 或 vb.net 中做到这一点

【问题讨论】:

  • 到目前为止你尝试过什么?提示:您可以使用Subtract(DateTime) 检索两个给定日期的日期和时间差异。
  • yourDate >= startDate AndAlso yourDate <= endDate

标签: c# .net vb.net datetime


【解决方案1】:

如果日期差小于 7 天,则打印“good”,否则打印“Not good”

var ok = (firstDate-secondDate).TotalDays < 7? "good": "Not good";
Console.WriteLine(ok);

TotalDaysdouble,因此您可以检查差异是否为全天,如果您希望完整天数差异为 int,请使用 Days

阅读更多关于TimeSpan 及其属性的信息。

【讨论】:

    【解决方案2】:
    if(date1 >= Convert.ToDateTime("Sep 22, 2013") && date1 <= Convert.ToDateTime("Sep 30, 2013"))
    {
    good
    }
    else
    {
    bad
    }
    

    【讨论】:

    • 完美,但我怎样才能像 -7 天那样自动获得 9 月 22 日?
    • 将 2013 年 9 月 22 日替换为 Convert.ToDateTime("Sep 30, 2013").AddDays(-7)
    【解决方案3】:

    您可以使用这个通用的Range 类来检查一些可比较的值(如 DateTime)是否在范围内:

    public class Range<T>
        where T : IComparable
    {
        public Range(T from, T to)
        {
            if (from.CompareTo(to) > 0)
                throw new ArgumentException("From should not be greater than To");
    
            From = from;
            To = to;
        }
    
        public T From { get; private set; }
        public T To { get; private set; }
    
        public bool Contains(T value)
        {
            return value.CompareTo(From) >= 0 && value.CompareTo(To) <= 0;
        }
        // other methods like Intersects etc
    }
    

    用法:

    var today = DateTime.Today;
    var range = new Range<DateTime>(today.AddDays(-7), today);
    DateTime date = new DateTime(2013, 9, 25);
    
    if (range.Contains(date))
       // say good
    

    【讨论】:

      【解决方案4】:

      感谢所有在这里帮助我的用户..这是我正在使用的最终代码..

      Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      
          Dim fileDate As Date = Convert.ToDateTime("Sep 25, 2013")
          Dim rightNow As Date = Convert.ToDateTime(Date.Now.ToString("MMM dd, yyyy"))
          Dim lastWeek = rightNow.AddDays(-7)
      
          If rightNow >= fileDate And lastWeek <= fileDate Then
      
              Debug.Print("its new")
          Else
              Debug.Print("too old")
          End If
      End Sub
      

      【讨论】:

        猜你喜欢
        • 2011-02-04
        • 2015-06-25
        • 1970-01-01
        • 2015-07-26
        • 2020-11-21
        • 2019-01-22
        • 1970-01-01
        • 2017-07-02
        • 2022-06-29
        相关资源
        最近更新 更多