【问题标题】: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 可能需要一些时间。

【问题讨论】:

  • 看一下 Date() 构造函数的MDN docs 可能会有用

标签: 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))
);
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"&gt;&lt;/script&gt;

【讨论】:

  • 有效!非常感谢!
猜你喜欢
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多