javascript - 如何在预订系统中处理时区
问题描述
我正在构建一个基于 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;
}
我还看到了许多解决方案,其中网站强制用户在使用日历或显示可用日期之前输入他们的时区。但我觉得完全没有必要。
我错过了什么吗?还是我的解决方案适用于每种情况?
解决方案
推荐阅读
- css - 它如何使 SideNav 在所有浏览器上保持一致?
- python - 通过使用硒单击更多新闻按钮来抓取新闻网站聚合器
- flutter - Flutter/Dart 中的日期时间解析
- python - 如何从for循环创建列表
- r - R-如何将 3D 散点图展平为 2D 图?
- javascript - 从链接 href 和 Vuetify v-btn 下载 Vue 文件
- javascript - 动态生成的样式元素
- php - XDebug 在 VScode 中无法用于 php 调试
- tensorflow - 将元数据添加到 tensorflow lite 文件
- javascript - 在 vue 应用程序中首次加载后动态 PixiJS 画布出错