如何在上午/下午 24 小时之间设置日期

Posted

技术标签:

【中文标题】如何在上午/下午 24 小时之间设置日期【英文标题】:How to set date between AM/PM 24-hour 【发布时间】:2021-12-08 23:34:24 【问题描述】:

我有 2 个参数。一个是 defaultFromD,另一个是 defaultFromD。如果我为此 x.CreatedOn >= defaultFromD && x.CreatedOn <= defaultToD 提供 2 个日期范围@

x.CreatedOn >= '2021-10-17' && x.CreatedOn

它的工作。但如果我为这两个参数提供相同的日期,则此条件不起作用。

x.CreatedOn >= '2021-10-20' && x.CreatedOn

我想知道如何在一个条件下通过这 2 个逻辑。请帮我解决这个问题。

谢谢...

  public ResponseDTO<IQueryable<LabRequestForLabOrderDTO>> GetApprovedLabRequestsQueryable(DateTime defaultFromD, DateTime defaultToD)
    
        var resp = ResponseBuilder.Build<IQueryable<LabRequestForLabOrderDTO>>();
        var reqs = this.labRequestRepository.GetAllActive().Where(x => x.IsActive && x.TrxStatus == 1 && x.InvoiceStatus == "Approved"
                        && x.CreatedOn >= defaultFromD && x.CreatedOn <= defaultToD)
                .Select(x => new LabRequestForLabOrderDTO
                
                    Clinic = x.Clinic,
                    LabOrderCreated = x.LabOrderCreated,
                    InvoiceStatus = x.InvoiceStatus,
                    CreatedOn = x.CreatedOn
                ).AsQueryable();

        resp.AddSuccessResult(reqs);
        return resp;
    

【问题讨论】:

将代码发布为文本并说明您要检索的内容。如果您查询数据库,则发布表架构,尤其是字段类型。 x.CreatedOn &gt;= '2021-10-20' &amp;&amp; x.CreatedOn &lt;= '2021-10-20' 等价于x.CreatedOn = '2021-10-20' 并且可能不匹配表中的任何记录。如果CreatedOndate 字段,它将匹配具有该日期的任何行。如果它是datetimedatetime2 等,它将匹配完全 2021-10-20 00:00:00.0000 的行 另一方面,如果您尝试过滤内存列表,则查询只会匹配与该值完全匹配的项目,精确到纳秒 问题不清楚。 在客户端有日期范围选择器。如果我选择相同的日期来获取记录。数据还没来。但如果我选择不同的范围,它的工作。我想知道如果我给出一个日期范围怎么办 @ChathurangaRanasingha 将代码发布为文本,而不是难以阅读的图像。图像不能被复制、编译和调试。问题是由字段类型引起的,而不是由客户端引起的。 CreatedOn 是什么?如果是表格列,它的类型是什么?如果它有时间组件,则查询必须更改为 x.CreatedOn &gt;=date.Date &amp;&amp; x.CreatedOn &lt; date.Date.AddDays(1) 【参考方案1】:

试试这个

x.CreatedOn.AddDays(-1) > defaultFromD && x.CreatedOn.AddDays(1) < defaultToD

【讨论】:

【参考方案2】:

这是由于 DateTime 和 Date Formate。

你应该试试下面的方法。

假设您的列 CreatedOn 数据类型是:DateTime

x.CreatedOn.Date >= '2021-10-20' && x.CreatedOn.Date <= '2021-10-20'

【讨论】:

我试过了。它不起作用 能否请您提供 CreatedOn 日期的示例数据? 对不起。我没听懂你。 分享您在这种情况下需要的表格样本数据。 x.CreatedOn >= '2021-10-20' && x.CreatedOn 【参考方案3】:

这对我有用

var todate = defaultToD.AddDays(1);

x.CreatedOn >= defaultFromD && x.CreatedOn <= todate

【讨论】:

不应该是&lt;= in x.CreatedOn &lt;= todate 否则它将匹配defaultFromD 和x.CreatedOn &gt;= todate 之后的任何日期是多余的? @phuzi 是的。你说对了。打字错误。谢谢。 我已经用错字修复更新了你的问题。

以上是关于如何在上午/下午 24 小时之间设置日期的主要内容,如果未能解决你的问题,请参考以下文章

swift - 如何将日期从上午/下午转换为 24 小时格式

Javascript:将 24 小时时间字符串转换为 12 小时时间,上午/下午且无时区

如何在 html5 日期时间选择器中将格式从 12 小时更改为 24 小时?

如何计算两个日期之间的营业时间(R语言)?

苹果手机桌面时间显示设置

Jenkins定时构建时间设置