以下是我需要做的事情:
我有ISO 8601格式dateString dateString = "2016-09-30T04:00:00.000+0000"
我需要解析并生成一个可读日期“September 30, 2016
”
这是我的格式化程序sap.ui.core.format.DateFormat
,它为我做了这个。
return dateFormatter.format(new Date(dateString));
问题是,根据MDN,
建议不要使用Date.parse直到ES5,解析 字符串完全取决于实现。还有很多 不同主机解析日期字符串的差异,因此是日期 字符串应该手动解析(如果很多,库可以帮助 要适应不同的格式。)
- 直接致电:
Date.parse(dateString)
- 隐含电话:
new Date(dateString)
因此我的格式化程序会调用Date.parse()
。
是否有更好的做法可以按照MDN的建议进行此类手动解析? 是否有任何SAPUI5方法可以实现这一目标?
答案 0 :(得分:0)
在大多数引擎中解析ISO日期应该是一致的,但是不能保证,定义Date对象的正确方法总是传递整数参数,如下所示
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);
但看到你想要一个包含月份等的字符串,而不是一个对象,最一致的方法就是自己简单地解析日期
var dateString = "2016-09-30T04:00:00.000+0000";
var months = [
'', 'January', 'February', 'March', 'April',
'May', 'June', 'July', 'August', 'September',
'October', 'November', 'December'
];
var parts = dateString.split(/[-T:.]/);
var parsed = months[+parts[1]] + ' ' + parts[2] + ', ' + parts[0];
document.body.innerHTML = parsed; // September 30, 2016