首页 > 解决方案 > 如何在预订系统中处理时区

问题描述

我正在构建一个基于 javascript 网络的预订系统,用户可以根据他们发布的可用性时间表与合作伙伴预订视频通话。

对等点可以生活在世界任何地方,因此该系统必须显示转换为本地格式和偏移量的所有日期和时间。

我想知道是否只是将每个日期时间以 UTC 格式存储在 BD 中,然后转换回本地格式以在界面上显示是否可以解决问题。我写了这个函数来转换为本地:

  toLocal(date) {
    date = this.toJsDate(date)
    let localNow = new Date()
    let localOffset = localNow.getTimezoneOffset()
    if(localOffset === date.getTimezoneOffset()) return date;

    var newDate = new Date(date.getTime()+date.getTimezoneOffset()*60*1000);

    var offset = date.getTimezoneOffset() / 60;
    var hours = date.getHours();

    newDate.setHours(hours - offset);

    return newDate;   
}

我还看到了许多解决方案,其中网站强制用户在使用日历或显示可用日期之前输入他们的时区。但我觉得完全没有必要。

我错过了什么吗?还是我的解决方案适用于每种情况?

标签: javascriptlocalizationtimezoneinternationalizationtimezone-offset

解决方案


推荐阅读