gpt4 book ai didi

javascript - 使用 momentJS 验证 ISO_8601 完整日期?

转载 作者:行者123 更新时间:2023-12-04 08:55:51 24 4
gpt4 key购买 nike

我有以下代码:moment(dateValue, moment.ISO_8601, true).isValid()哪个效果很好,除了当我只有年和月的日期时,即 2020-07 ,它仍然返回 true .
我怎样才能让它返回true仅当该值包含 时至少 完整的约会? (即 2020-07-15 )

最佳答案

您可以定义自己的 ISO_8601格式常数。 moment.ISO_8601的值是一个允许部分时间戳的函数。如果你想严格,你只需要提供你自己的。我正在重用 HTML5 内置的“本地日期”常量并附加时区选项 "Z"到最后。

const ISO_8601 = moment.HTML5_FMT.DATETIME_LOCAL_MS + 'Z';
const dateValue = new Date().toISOString();

// Valid
console.log(dateValue, '?', moment(dateValue, ISO_8601, true).isValid());

// Invalid
const yearMonth = dateValue.substring(0, 7);
console.log(yearMonth, '?', moment(yearMonth, ISO_8601, true).isValid());

// Valid
const ymd = dateValue.substring(0, 10);
console.log(ymd, '?', moment(ymd, moment.HTML5_FMT.DATE, true).isValid());

// Valid
const ts = '2012-02-02T13:30-01:00';
const format = moment.HTML5_FMT.DATETIME_LOCAL + 'Z';
console.log(ts, '?', moment(ts, format, true).isValid());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>

在哪里:
  • moment.HTML5_FMT.DATETIME_LOCAL_MS"YYYY-MM-DDTHH:mm:ss.SSS"
  • moment.HTML5_FMT.DATE"YYYY-MM-DD"

  • 这里都是内置的 HTML5 formats暂时(从版本 2.20.0 开始)。这些常量是 added 2017 年 12 月 16 日。
    // currently HTML5 input type only supports 24-hour formats
    hooks.HTML5_FMT = {
    DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
    DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
    DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
    DATE: 'YYYY-MM-DD', // <input type="date" />
    TIME: 'HH:mm', // <input type="time" />
    TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
    TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
    WEEK: 'GGGG-[W]WW', // <input type="week" />
    MONTH: 'YYYY-MM', // <input type="month" />
    };

    关于javascript - 使用 momentJS 验证 ISO_8601 完整日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63831714/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com