没有时间部分的日期时间比较?

Posted

技术标签:

【中文标题】没有时间部分的日期时间比较?【英文标题】:DateTime comparison without time part? 【发布时间】:2012-07-22 10:58:53 【问题描述】:

我写了这段代码。但我想忽略时间,我只想比较天。

from s in sayac_okumalari
where s.okuma_tarihi == startDate && s.sayac_id == sayac_id
group s by new  date = new DateTime(((DateTime)s.okuma_tarihi).Year, ((DateTime)s.okuma_tarihi).Month, ((DateTime)s.okuma_tarihi).Day, ((DateTime)s.okuma_tarihi).Hour, 1, 1)  into g
select new

     okuma_tarihi = g.Key.date,
     T1 = g.Sum(x => x.toplam_kullanim_T1),
     T2 = g.Sum(x => x.toplam_kullanim_T2),
     T3 = g.Sum(x => x.toplam_kullanim_T3)
;

例如:

25.02.1987 == 25.02.1987

【问题讨论】:

How to compare only Date without Time in DateTime types in C#?的可能重复 【参考方案1】:

使用s.okuma_tarihi.Value.Date == startDate.Date。这应该只允许您比较 Date 组件。

更新 从 cmets 中的讨论看来,用户正在使用 NullableType。因此更新了 NullableType 的解决方案。

【讨论】:

's.okuma_tarihi' 不包含“日期”的定义 从您的代码 sn-p 看起来,您需要将 s.okuma_tarihi 类型转换为 DateTime s.okuma_tarihi.Value.Date == startDate.Date 正在工作。如果编辑您的解决方案,我会标记它。谢谢。 ((DateTime)s.okuma_tarihi)。日期仅使用调用,分配。 已更新。但是,看起来您使用的是 Nullable 类型。在执行操作之前,您可能需要确保 Nullable 类型具有值。【参考方案2】:

使用日期时间的Date 属性。例如,

var date= DateTime.Now.Date;

【讨论】:

【参考方案3】:

因为您可以将 s.okuma_tarihi 转换为 DateTime,所以我认为您可以这样做:

var sonuc = from s in sayac_okumalari
        where (DateTime)s.okuma_tarihi.Date == startDate.Date && s.sayac_id == sayac_id
        group s by new  date = new DateTime(((DateTime)s.okuma_tarihi).Year, ((DateTime)s.okuma_tarihi).Month, ((DateTime)s.okuma_tarihi).Day, ((DateTime)s.okuma_tarihi).Hour, 1, 1)  into g
        select new
        
             okuma_tarihi = g.Key.date,
             T1 = g.Sum(x => x.toplam_kullanim_T1),
             T2 = g.Sum(x => x.toplam_kullanim_T2),
             T3 = g.Sum(x => x.toplam_kullanim_T3)
        ;

希望对你有帮助。

【讨论】:

【参考方案4】:

尝试在 DateTime 对象上使用 Date 属性将是一个很好的简单解决方案。

string AdmissionDate = "10/15/2017" // mm/dd/yyyy
string DepartureDate = "10/14/2017" // mm/dd/yyyy

if (Convert.ToDateTime(AdmissionDate).Date > Convert.ToDateTime(DepartureDate).Date)

    // Validation: Admission Date can not be greater than Departure Date... 

【讨论】:

【参考方案5】:

试试这个...

        try
        
         DateTime Date1= DateTime.ParseExact(txtBox1.Text,"dd/MM/yyyy",null);
         DateTime Date2 = DateTime.ParseExact(txtBox2.Text, "dd/MM/yyyy", null);

          if (Date1 > Date2) 
          
           //........
          
        
        catch (Exception ex)
        
            MessageBox.Show(ex.Message);
        

【讨论】:

以上是关于没有时间部分的日期时间比较?的主要内容,如果未能解决你的问题,请参考以下文章

如何比较Java中日期的时间部分

Moment js日期时间比较

仅比较日期部分而不比较 JavaScript 中的时间

如何仅比较 cosmos db 中的日期部分

如何在 C# 应用程序范围内更改仅日期部分将用于日期时间比较

在 T-SQL 中比较日期,忽略时间部分