[英]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。 我尝试使用以下选项:
moment(item["End Date"]).utc().format()
moment(item["Start Date"]).format('MM/DD/YYYY HH:mm')
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.