【问题标题】:Convert time string to moment.js to use .isBetween将时间字符串转换为 moment.js 以使用 .isBetween
【发布时间】:2022-01-01 10:25:15
【问题描述】:
我有一个字符串 '10:30 AM',如何将其转换为字符串以便可以使用 .isBetween() 函数?
每当我尝试执行new Date(time) 或moment(new Date(time)) 时,都会收到“无效日期”。此外,它说它的日期无效,我是否必须有一个日期和时间才能使其有效?我认为.isBetween 可能需要一些时间。
【问题讨论】:
标签:
javascript
string
date
momentjs
【解决方案1】:
ECMAScript 日期只是自 1970 年 1 月 1 日 UTC 以来的毫秒偏移量,因此本质上是日期和时间 (UTC)。
如果您正在使用 moment.js,也可以使用它来解析字符串。在这种情况下,您必须使用 same tokens as for formatting 提供字符串的格式(例如 h:mm A)。始终传递格式是个好主意,否则它可能会退回到内置解析器,这会破坏使用库进行解析的目的。
当只给定时间时,moment.js 使用当前日期作为年、月和日:
let s = '10:30 AM';
// <current date as YYYY-MM-DD> 10:30
console.log(moment(s, 'h:mm A').format('YYYY-MM-DD H:mm'))
let time1 = '6:23 AM';
let time2 = '9:18 PM';
let time3 = '10:35 PM';
let format = 'h:mm A';
console.log(
moment(time2, format).isBetween(moment(time1, format), moment(time3, format))
);
console.log(
moment(time1, format).isBetween(moment(time2, format), moment(time3, format))
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>