根据用户时区更改页面的时间

时间:2015-06-28 15:40:54

标签: javascript html localization

我正在为我所在的国际组写一个静态内容网页。每周都有电话会议,我想列出本地化的时间,无论是用户的位置,系统时间,还是基于用户选择他们的时区。我正在考虑使用toLocaleString(),但我不知道如何将它传递给一周中的某一天,并将其转换为本地化视图。有什么建议吗?

修改 我应该指定开始,我希望日期格式为“星期二在05:30”。我对确切的格式很灵活,但我只需要显示星期几(随时区变化)和时间(HH:MM)。

1 个答案:

答案 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吗?如果您正在签约 ,请考虑全部写完。

相关问题