将时间字符串转换为 moment.js 以使用 .isBetween
Convert time string to moment.js to use .isBetween
我有一个字符串 '10:30 AM',如何将它转换为字符串以便我可以使用 .isBetween()
函数?
每当我尝试执行 new Date(time)
或 moment(new Date(time))
时,我都会收到“无效日期”。此外,它说它是一个无效的日期,我是否必须有一个日期和时间才能使其有效?我假设 .isBetween
可能需要一些时间。
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>
我有一个字符串 '10:30 AM',如何将它转换为字符串以便我可以使用 .isBetween()
函数?
每当我尝试执行 new Date(time)
或 moment(new Date(time))
时,我都会收到“无效日期”。此外,它说它是一个无效的日期,我是否必须有一个日期和时间才能使其有效?我假设 .isBetween
可能需要一些时间。
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>