我从循环中的对象接收到以下格式的日期:2018-08-06 20:45:00
我只想在客户端的时区中显示“20:45”(始终用两位数表示分钟)。我在 vue.js 的方法部分创建了这个方法:
ihaveadate(dateFromLoop) {
var d = new Date(dateFromLoop);
d.setTime(d.getTime() + new Date().getTimezoneOffset() * 60 * 1000);
var hour = d.getUTCHours();
var minutes = (d.getMinutes() < 10 ? "0" : "") + d.getMinutes();
return `${hour}:${minutes}`;
}
它似乎工作正常,除了在 safari 上我有 NaN:NaN,这个问题有一个干净的解决方案吗?
读完你的答案后,我让它像这样工作:
var dateFromLoop = '2018-08-06 20:45:00';
var date = Date.parse(dateFromLoop.replace(" ", "T"));
const daty = new Intl.DateTimeFormat({
hour: "numeric",
minute: "numeric"
}).format(date);
console.log(daty);
最佳答案
是的,这在 Safari 上不起作用,至于 ECMAScript 5 ISO-8601 format support :
Alternatively, the date/time string may be in ISO 8601 format. For example, "2011-10-10" (just date) or "2011-10-10T14:48:00" (date and time) can be passed and parsed.
您需要在日期时间中包含 T
才能使其在 Safari 上运行:
new Date('2014-02-18T15:00:48');
你可以尝试这样做:
new Date(dateFromLoop.replace(/\s/, 'T');
关于javascript - 显示 "hours and minutes"适用于除 safari 之外的所有浏览器。 JavaScript 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51708032/