我正在为我所在的国际组写一个静态内容网页。每周都有电话会议,我想列出本地化的时间,无论是用户的位置,系统时间,还是基于用户选择他们的时区。我正在考虑使用toLocaleString(),但我不知道如何将它传递给一周中的某一天,并将其转换为本地化视图。有什么建议吗?
修改 我应该指定开始,我希望日期格式为“星期二在05:30”。我对确切的格式很灵活,但我只需要显示星期几(随时区变化)和时间(HH:MM)。
答案 0 :(得分:1)
在 JavaScript 中,Date的默认人类可读输出是计算机的本地时间。您只能选择本地时间方法和特别命名的UTC方法,除非您编写自定义方法。
请注意以下内容如何反映我的时区
(new Date()).toString(); // "Sun Jun 28 2015 16:54:16 GMT+0100 (GMT Daylight Time)"
所以你需要做的是使用一个国际时间,然后为所有用户显示,这是时间的整数表示( ms ,因为 unix epoch )或某些已知偏移量的时间(即使用UTC)
+new Date(); // 1435506856000 (ms since midnight of 1st Jan 1970 UTC)
(new Date()).toISOString(); // "2015-06-28T15:54:16.000Z" (ISO 8601 date time code)
整数将具有最佳的向后兼容性。
然后在您的页面中,您将根据此值
构建日期new Date(1435506856000); // "Sun Jun 28 2015 16:54:16 GMT+0100 (GMT Daylight Time)" or equivalent in your local timezone
如果您没有使用 Integer 或 ISO 8601 兼容字符串,则可能需要使用new Date(Date.UTC(yyyy, mm, dd, hh, etc...))
而不是new Date
它将被正确解释
简而言之,在 UTC / ISO 8601 / ms中存储和发送日期和时间,因为unix epoch 和本机 Date 将为您处理本地化
“周二05:30”
您要查找的方法是d.getDay()
function formatDate(d) {
var day = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];
function pad(x) {
if (x < 10) return '0' + x;
return '' + x;
}
return day[d.getDay()] + "'s at " + pad(d.getHours()) + ':' + pad(d.getMinutes());
}
formatDate(new Date); // "Sunday's at 18:28"
另外,您确定要占有Tuesday's
而不是复数Tuesdays
吗?如果您正在签约 ,请考虑全部写完。