繁体   English   中英

无法使用 Moment.JS 将字符串日期和时间转换为格式

[英]Unable to convert the string date and time to format using Moment.JS

我有一个日期格式,如 date =“20190516”和时间如:“073000”,我正在尝试使用 moment js 将其转换为正常日期格式,但我收到NAN错误

let dat = "20190516"
let form = moment(dat).format('YYYY-MM-DD');
alert(form);

let dat = "073000"
let form = moment(dat).format('HH:MM:ss');
alert(form);

第一种格式

const newFormat = moment('20190516','YYYYMMDD').format('YYYY-MM-DD');
alert(newFormat);

第二种格式

const newFormat = moment('073000','HHmmss').format('HH:mm:ss');
alert(newFormat);

由于您以字符串格式传递时间并且它不在 ISO 8601 中,您需要定义它是什么格式,否则您将收到来自moment.js的 function 已弃用警告

如果您没有在您的情况下定义格式类型,则需要添加HHmmss否则您将收到此类警告。

警告:浏览器对解析字符串的支持不一致。 因为没有关于应该支持哪些格式的规范,所以在某些浏览器中有效的内容在其他浏览器中无效。为了解析除 ISO 8601 字符串以外的任何内容的一致结果,您应该使用String + Format

moment 官方文档中阅读有关字符串类型和日期的更多信息

运行下面的代码段。

 let time = "073000" let timeFormatted = moment(time, 'HHmmss').format('HH:mm:ss'); console.log('Time: '+ timeFormatted) let date = "20190516" let dateFormatted = moment(date).format('YYYY-MM-DD'); console.log('Date: '+ dateFormatted)
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>

您需要告诉 Moment 如何解析073000 ,因为它不是 ISO 8601 或 RFC 2822 日期时间格式,因此无法推断。

从那一刻起文档

从字符串创建时刻时,我们首先检查字符串是否与已知的 ISO 8601 格式匹配,然后检查字符串是否与 RFC 2822 日期时间格式匹配,如果已知格式为未找到。

let dat = "20190516";
let form = moment(dat).format("YYYY-MM-DD");
alert(form);

let dat = moment("073000", "HHmmss");
let form = moment(dat).format("HH:mm:ss");
alert(form);

顺便说一句, MM用于格式化月份,而mm用于格式化分钟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM