使用特定格式验证时刻 js 中的日期
Posted
技术标签:
【中文标题】使用特定格式验证时刻 js 中的日期【英文标题】:Validate date in momemnt js with specified format 【发布时间】:2021-07-18 02:03:37 【问题描述】:我正在尝试使用moment js进行验证,如下图,它返回true,这是正确的。
moment("10/22/2021","MM/DD/YYYY", true).isValid()
但在某些情况下,我将日期或月份部分作为一位数字,在这些情况下,它将返回 false。有人可以帮助我如何处理这种情况。
moment("4/22/2021","MM/DD/YYYY", true).isValid()
-- 想要返回 true
需要考虑的要点:我不想删除设置为 true 以进行严格检查的最后一个参数。日期参数可以随任何 serprator 一起提供。 (意味着它可以像'3-22-2021'、'2.12.2020'、'2_12_2020')。因此,基于 serprator 拆分日期并在日期或月份前添加 0 的建议将不起作用。 或者如果你能建议如何找到合适的 serprator 也会有所帮助
【问题讨论】:
【参考方案1】:您可以使用toLocaleDateString
方法获取“MM/DD/YYYY”格式的标准日期,但它不适用于“_”,您必须replace
,以下示例供参考。
let d = new Date("2-3-2011");
console.log(d.toLocaleDateString());
d = new Date("2.3.2011");
console.log(d.toLocaleDateString());
d = new Date("2/3/2011");
console.log(d.toLocaleDateString());
d = new Date(("2_3_2011").replace(/_/g,"-"));
console.log(d.toLocaleDateString());
【讨论】:
【参考方案2】:考虑到12/02/21XX
和12/2/21XX
都可以通过M/D/YYYY
进行验证。因此,您可以使用它并评估传入日期的格式并将其传递给执行其余操作的那一刻。
import moment from "moment";
const date = "10/22/2021";
let dateFormat;
if(date.includes("/"))
dateFormat = 'M/D/YYYY';
else if(date.includes("."))
dateFormat = 'M.D.YYYY';
else if(date.includes("-"))
dateFormat = 'M-D-YYYY';
else if(date.includes("_"))
dateFormat = 'M_D_YYYY';
const date_item = moment(date, dateFormat, true).isValid();
console.log(date_item)
【讨论】:
以上是关于使用特定格式验证时刻 js 中的日期的主要内容,如果未能解决你的问题,请参考以下文章