繁体   English   中英

Moment.js在将来的日期中错误地转换了日期

[英]Moment.js converting the date incorrectly in case of future dates

我正在使用moment.js在我的JavaScript代码中比较两个日期。 输入值从JSON字符串传递。

当我提供日期21/01/2050 00:00(MM / DD / YYYY HH:mm FORMAT)时,结果日期显示为21/1/1950 00:00。 我尝试使用以下选项:

  1. moment(item["End Date"]).utc().format()
  2. moment(item["Start Date"]).format('MM/DD/YYYY HH:mm')
  3. moment(new Date(item["Start Date"])).format('MM/DD/YYYY HH:mm')

但是这些仍然给了我1950年而不是2050年。

有没有办法正确格式化此格式?

由于您输入的内容不是通过moment(String)识别的ISO 8601或RFC 2822格式

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

警告:浏览器对字符串的支持不一致。 因为没有关于应该支持哪种格式的规范,所以在某些浏览器中有效的格式在其他浏览器中无效。

为了获得一致的解析ISO 8601字符串以外的结果的结果,应使用String + Format

因此,您必须使用moment(String, String) ,将'DD/MM/YYYY HH:mm'用作第二个参数。

这是一个现场样本:

 var input = "21/01/2050 00:00"; console.log( moment(input, 'DD/MM/YYYY HH:mm').format('MM/DD/YYYY HH:mm') ); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script> 

暂无
暂无

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

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