【问题标题】:Check if start datetime and end datetime are valid in momentjs检查开始日期时间和结束日期时间在momentjs中是否有效
【发布时间】:2017-04-10 13:54:13
【问题描述】:

我是 momentJs 的新手,所以在这里我需要一些帮助。我正在构建一个表单,用户可以在其中发送特定工作期间的可用性。所以在表格中你有一个 startDate、startTime、endDate 和 endTime。由于我必须从客户端使用 api,我们必须发送这样的日期(示例)“2015-06-17T14:24:36”(中间有“T”)。目前我收到的日期和时间彼此分开,但最终将它们合并在一起,因此它符合 api 读取日期的方式。

现在我的问题如下。我必须创建一个检查,以查看输入的 startdate-time 和 enddate-time 是否有效。例如,开始日期始终必须是结束日期之前的日期(非常合理)。但是在 momentJS 中是否有一种简单的方法可以做到这一点?

或者我应该使用其他方法吗?

谢谢,如果我的问题不是很清楚,请告诉我,以便我提供更多信息!

注意:最后应该是这样的:

var start = "2017-06-17T14:24:36"

var end = "2017-07-03T14:24:36"

检查开始日期和结束日期是否有效的函数

结果 = 真

【问题讨论】:

    标签: javascript date datetime momentjs


    【解决方案1】:

    如果您只需要检查startDate 是否在endDate 之前,您可以使用isAfter

    这是一个工作示例:

    var start = "2017-06-17T14:24:36";
    var end = "2017-07-03T14:24:36";
    
    function checkDate(start, end){
     var mStart = moment(start);
     var mEnd = moment(end);
     return mStart.isBefore(mEnd);
    }
    
    console.log(checkDate(start, end));
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

    在我的第一个示例中,我使用了moment(String) 解析,它接受 ISO 8601 格式的输入。

    如果您需要解析非 ISO 8601 格式,您可以使用moment(String, String) 指定输入格式(例如var mStart = moment(start, 'DD-MM-YYYYTHH:mm:ss');)。

    如果您必须支持多种格式,您可以使用moment(String, String[])。正如文档所述moment(String, String[])

    • 更喜欢产生有效日期而不是无效日期的格式。
    • 更喜欢解析更多字符串而不是更少并且使用更多格式而不是更少的格式,即更喜欢更严格的解析。
    • 首选数组中较早的格式。

    【讨论】:

    • 是的!这正是我想要的!只是一个小问题..是否也可以在同一字符串中将 YYYY-MM-DD 格式切换为 DD-MM-YYYY?还是moment js会认不出这个?
    • @TomLuijten 你的意思是你必须同时接受YYYY-MM-DDTHH:mm:ssDD-MM-YYYYTHH:mm:ss 吗?
    • 我的意思是我们的客户有不时改变事物的习惯,所以现在他使用的是 YYYY-MM-DDThh:mm:ss 格式,但它可能会更改为 DD-MM-YYYYThh: mm:ss 最终我只使用了这两个选项之一,但我只是想知道 moment 是否也可以使用另一种日期格式:)
    • @TomLuijten 好的,因此您可以使用moment(start),如 sn-p 所示,因为日期字符串采用 ISO 8601 格式,如果您需要支持其他格式,请使用时刻 parsing with format,正如我所说在我回答的第二部分。如果它解决了您的问题,请不要忘记将答案标记为已接受(您也会因此获得声誉)。
    猜你喜欢
    • 1970-01-01
    • 2012-05-31
    • 2018-11-20
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 2016-05-03
    相关资源
    最近更新 更多