【问题标题】:C#, How to check Hour and minute only from Datetime?C#,如何仅从日期时间检查小时和分钟?
【发布时间】:2019-01-10 04:24:09
【问题描述】:

我的数据库中有 DateTime 列,例如 2018-08-02 14:00:00。我想比较日期和时间(仅限小时和分钟)。到目前为止,我已经使用了

DbFunctions.CreateTime(x.BroadCastOn.Hour, x.BroadCastOn.Minute,0.00)

但它没有给我所需的结果

var todaysDate= DateTime.Now;   
context.deliverys
          .Where(x => DbFunctions.TruncateTime(x.DeliveredOn)  == todaysDate.Date  && todaysDate.TimeOfDay == DbFunctions.CreateTime(x.DeliveredOn.Hour, x.DeliveredOn.Minute,0.00).ToList()  

【问题讨论】:

  • 您可能需要dt.ToString("HH:mm")ToShortTimeString
  • 每天只有一秒钟的时间相等...你想忽略秒数 - 所以使用todaysDate.HourtodaysDate.Minute
  • 或类似 SqlFunctions.DateName("hh", foo) 的东西?并比较 hh 然后 mm
  • 只需 todaysDate.TimeOfDay.Hours == x.DeliveredOn.Hour && todaysDate.TimeOfDay.Minutes== x.DeliveredOn.Minute 这行得通
  • 您可以直接将数据转换为仅考虑小时和分钟 DateTime.Now.ToString("MM/dd/yyyy H:mm") 并进行比较。

标签: c# entity-framework linq model-view-controller


【解决方案1】:

看起来您的意图不是将秒数设为 0,是吗? DateTime.Now 几乎不会将秒数设为 0。可能您的意思是忽略秒数:

var todaysDate= DateTime.Now;   
context.deliverys
   .Where(x => 
       DbFunctions.TruncateTime(x.DeliveredOn)  == todaysDate.Date  &&
      todaysDate.ToString("HH:mm") ==   
       DbFunctions.CreateTime(x.DeliveredOn.Hour, x.DeliveredOn.Minute,0).ToString(@"hh\:mm")
   .ToList()

【讨论】:

  • 这给了我错误“方法 Tostring takse 1 参数没有重载”
【解决方案2】:

简单地说,

 context.deliverys
          .Where(x => DbFunctions.TruncateTime(x.DeliveredOn)  == todaysDate.Date  
&& todaysDate.TimeOfDay.Hours == x.DeliveredOn.Hour && todaysDate.TimeOfDay.Minutes== x.DeliveredOn.Minute).ToList()

【讨论】:

    猜你喜欢
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多