我正在做一个有角度的项目。
我想要一张桌子上办公室的开始时间和休息时间。
示例:8:30-17:30
该办公室在英国和印度有两个分支机构。
所以用户可以输入英国时间或印度时间。但我将把时间存储在格林尼治标准时间。
所以我想提供一个选项来选择时区并输入时间。
然后我必须将那个时间转换为GMT时间并发送到数据库。
如何将英国时间转换为格林尼治标准时间?
或者你知道做这种情况的想法吗?请给我建议。
谢谢
ECMAScriptDate实例没有时区,它们本质上是UTC。系统设置用于默认的toString加上get和set方法,因此它们看起来是本地的。
此外,解析器是非常基本的,除了解析为toISOString指定的精确格式外,通常应避免使用解析器。
您还应该看到如何将JavaScript日期初始化到特定时区,这可能与此问题重复。
实现目标的最佳方法(直到Temporal对象得到广泛支持(是使用库。有许多使用时区的库,以下使用Luxon。
// Alias
let DateTime = luxon.DateTime;
// Create a date for now in London
let ukDate = DateTime.now().setZone('Europe/London');
// Set it to the required time
let ukOpenTime = ukDate.set({hour:8, minute:30, second:0, millisecond: 0});
console.log('ukOpenTime as string :' + ukOpenTime.toString());
// Get time value to store
let millis = ukOpenTime.toMillis();
console.log('ukOpenTime as time value: ' + millis);
// Show equivalent local time in numerous ways
// Shift ukOpenTime to local zone: default is the local (system) timezone
let localOpenTime = ukOpenTime.setZone();
console.log('Equivalent local time 1 : ' + localOpenTime.toString());
// Use the time value (millis) to create a new Luxon object
let localOpenTime2 = DateTime.fromMillis(millis);
console.log('Equivalent local time 2 : ' + localOpenTime2.toString());
// Use the time value (millis) to create a plain date
let localOpenTime3 = new Date(millis);
console.log('Equivalent local time 3 : ' + localOpenTime3.toString());
<script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/3.0.1/luxon.min.js"></script>
为什么不将其存储在Epoch Time中并每次转换?比如1659755549?或使用epoch作为计算的中间值
p.s.无代表评论:(