将正确的值传递给 moment.js `toDate() 函数`
Passing correct value to moment.js `toDate() function`
在我的 react-native 应用程序的 timepicker 组件中,我需要将一个值传递给 moment 的 toDate()
函数,因为这是组件需要的格式。
我的值是一个时钟值,以字符串形式出现,例如“14:23”。
我的问题是,我如何获取该时钟字符串值,将其附加到日期,然后将其格式化为我可以将其全部作为 val
的值传递的方式传入这里:
this.value = moment(val).toDate();
我试过这个:
const val = "14:24"
const m = moment(`2022-02-19:${val}`);
console.log('isValid: ', m.isValid()); // false
但这失败了。
但是,就此而言,也是如此:
const m = moment("2011-10-10T10:20:90");
console.log('isValid: ', m.isValid()); // false
所以我想这并不奇怪,并且表明这里有一些我不理解的地方。最重要的是,我如何格式化一个值,使用像“14:24”这样的字符串值,然后将它传递给 moment 的 toDate()
函数?
this.value = moment(val).toDate();
Moment 有一个格式化程序,可以格式化然后将此字符串解析为 JavaScript 日期。您当前使用的格式不是标准的 ISO8601 格式 YYYY-MM-DDTHH:mm:ssZ,因此 moment 本身不支持它,因为您在日后使用的是 : 符号,而不是字母“T”。
您可以像这样更改代码轻松获得所需的效果:
const m = moment(`2022-02-19T${val}`);
或者,您可以更改 moments defaultFormatter 以支持您想要的任何格式。为此,您可以像这样简单地调用它:
moment.defaultFormat = "YYYY-MM-DD:HH:mm"
或者像这样简单地将格式化程序与日期字符串一起显式传递给 moment:
const m = moment(`2022-02-19:${val}`, "YYYY-MM-DD:HH:mm").toDate()
在我的 react-native 应用程序的 timepicker 组件中,我需要将一个值传递给 moment 的 toDate()
函数,因为这是组件需要的格式。
我的值是一个时钟值,以字符串形式出现,例如“14:23”。
我的问题是,我如何获取该时钟字符串值,将其附加到日期,然后将其格式化为我可以将其全部作为 val
的值传递的方式传入这里:
this.value = moment(val).toDate();
我试过这个:
const val = "14:24"
const m = moment(`2022-02-19:${val}`);
console.log('isValid: ', m.isValid()); // false
但这失败了。
但是,就此而言,也是如此:
const m = moment("2011-10-10T10:20:90");
console.log('isValid: ', m.isValid()); // false
所以我想这并不奇怪,并且表明这里有一些我不理解的地方。最重要的是,我如何格式化一个值,使用像“14:24”这样的字符串值,然后将它传递给 moment 的 toDate()
函数?
this.value = moment(val).toDate();
Moment 有一个格式化程序,可以格式化然后将此字符串解析为 JavaScript 日期。您当前使用的格式不是标准的 ISO8601 格式 YYYY-MM-DDTHH:mm:ssZ,因此 moment 本身不支持它,因为您在日后使用的是 : 符号,而不是字母“T”。
您可以像这样更改代码轻松获得所需的效果:
const m = moment(`2022-02-19T${val}`);
或者,您可以更改 moments defaultFormatter 以支持您想要的任何格式。为此,您可以像这样简单地调用它:
moment.defaultFormat = "YYYY-MM-DD:HH:mm"
或者像这样简单地将格式化程序与日期字符串一起显式传递给 moment:
const m = moment(`2022-02-19:${val}`, "YYYY-MM-DD:HH:mm").toDate()