即使日期格式支持 ISO 8601,IE11 中的日期也无效
Posted
技术标签:
【中文标题】即使日期格式支持 ISO 8601,IE11 中的日期也无效【英文标题】:Invalid date in IE11 even though date format is ISO 8601 supported 【发布时间】:2018-09-21 06:36:16 【问题描述】:我已经使用 moment 将日期转换为支持 ISO 的格式,因为它在 chrome 和 firefox 上运行良好,但在 IE11 上却不行 我根据文档 YYYY-MM-DD 支持 iso 格式, 这里我的 js_time1 格式如前所述 ddd MMM D YYYY hh:mm:ss 所以我用它来格式化它
var js_time = moment(js_time1).format('YYYY-MM-DD');
我也试过
var js_time = moment(js_time1,'ddd MMM D YYYY hh:mm:ss').format('YYYY-MM-DD');
但没有用。
js_time1 的格式为 Mon Aug 3rd 2018 12:12:21
提前致谢
【问题讨论】:
向我们展示js_time1
的实际内容。但答案几乎可以肯定:解析时使用格式字符串:momentjs.com/docs/#/parsing/string-format
@T.J.Crowder 我已经添加了格式。我的第二次尝试不是和你建议的一样吗
这可能不是原因,但请注意IE 11不支持input type=date
,并自动将元素的type属性更改为text
。
@ParthGoswami - 可能。再说一遍:Show 是js_time1
的实际内容。您已将“格式用于...”放在最后,但这正是其中的内容吗? (请注意 D
与 3rd
不匹配。)
【参考方案1】:
假设 js_time1
是您显示的“格式” ("Mon Aug 3rd 2018 12:12:21"
),则存在三个问题:
D
用于3rd
。 D
不匹配序数,即Do
。
您使用hh
(1-12) 几个小时,这意味着与a
一起使用。我假设您的时间是 24 小时格式,所以是 HH
。
如果你修复了这些东西(包括修复字符串中的错误),它就会起作用:
var js_time1 = "Fri Aug 3rd 2018 12:12:21";
var js_time = moment(js_time1,'ddd MMM Do YYYY HH:mm:ss').format('YYYY-MM-DD');
console.log(js_time);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
【讨论】:
以上是关于即使日期格式支持 ISO 8601,IE11 中的日期也无效的主要内容,如果未能解决你的问题,请参考以下文章