【发布时间】:2016-02-14 10:59:46
【问题描述】:
我想以可读的格式显示时间。所以我使用下面的js代码。但是在 Chrome 和 IE 中的输出是不同的。如何更改代码以在所有浏览器中提供相同的输出?
IE 中的输出:上午 12:46
在 Chrome 中:上午 6 点 16 分
时区为:UTC +05:30
var unReadableDate = "2016-01-25T00:46:00";
var newDate = new Date(unReadableDate);
//var timeZoneOffset = (new Date()).getTimezoneOffset();
//newDate.setMinutes(newDate.getMinutes() - timeZoneOffset);
alert(formatAMPM(newDate));
//below function formats time in am and pm
function formatAMPM(date) {
var hours = date.getHours();
var minutes = date.getMinutes();
var ampm = hours >= 12 ? 'pm' : 'am';
hours = hours % 12;
hours = hours ? hours : 12; // the hour '0' should be '12'
minutes = minutes < 10 ? '0' + minutes : minutes;
var strTime = hours + ':' + minutes + ' ' + ampm;
return strTime;
}
【问题讨论】:
-
对我来说,Chrome 输出
1:46 am。问题可能与用户时区有关。顺便说一句,Firefox 也会输出12:46 am。 -
不要使用 Date 构造函数解析字符串,它是不可靠的(正如您所发现的)。没有时区的 ISO 8601 日期时间字符串应被视为本地(即考虑系统时区偏移),但有些浏览器不会,有些则根本不会解析它。手动解析字符串,只需要两行函数或库。
标签: javascript date