猿问

如何根据时区偏移减去时间

我尝试寻找答案,但找不到与时区偏移有关的特定答案。因此,如果已经有任何答案,那么发布同样的内容真的很抱歉。

我在项目中有一个需求,我需要将时间转换为UTCGMT基于用户指定的时间和用户提供的时区偏移值。基本上,用户根据他的本地时间提供他的本地时间和时区偏移值。我需要将其转换为 UTC/GMT 时间。

我正在使用 Node.js,以下是 Node.js 后端中可用的数据:

Time: 2020-11-05T15:00:00.000Z
Timezone offset value: +02:00

由于时区偏移值为 +02:00,我需要从时间中减去它以将其转换为 UTC 格式。这样我就可以得到时间:2020-11-05T13:00:00.000Zmoment-js我也用的。有人可以帮我如何使用 Node.js 或 Moment.js 实现这一点吗?


德玛西亚99
浏览 111回答 3
3回答

白衣非少年

如果偏移考虑夏令时,您应该能够执行以下操作:const the_date = '2020-11-05T15:00:00.000';const offset = 2;const utc_time = moment.utc(the_date).subtract(offset, 'hours');

慕斯王

目前尚不清楚您要尝试转换哪种方式。如果要将 UTC 转换为固定偏移量,则可以使用该utcOffset函数,如下所示:const m = moment.utc('2020-11-05T15:00:00.000Z').utcOffset('+02:00'); m.format();  //=> "2020-11-05T17:00:00+02:00"或者 - 如果您尝试从+02:00 进行转换,那么您将在输入中包含该偏移量而不是Z(Z 表示 UTC)。然后您只需调用该utc函数,如下所示:const m = moment('2020-11-05T15:00:00.000+02:00').utc(); m.format();  //=> "2020-11-05T13:00:00Z"但是您应该注意偏移量与时区不同。一个时区可以有多个偏移量,其中一个偏移量将应用于给定时间点。这些偏移量可能会因夏令时和标准时间的变化而变化。因此,要求用户根据本地时间选择“时区偏移值”是有问题的 - 因为您可能将该偏移应用到错误的时间点。您还应该了解Moment 的项目状态,并可能选择不同的库。

慕尼黑5688855

因此如果有人正在寻找答案,他们将有另一个选择:var moment      =   require('moment');var time        =   "2020-11-05T15:00:00.000Z";var timeoffset  =   "+02:00";    time        =   moment.utc(time).local().format('YYYY-MM-DDTHH:mm:SS.000');    time        =   moment(time, 'YYYY-MM-DDTHH:mm:ss.000').subtract(timeoffset).format('YYYY-MM-DDTHH:mm:ss.000') + 'Z';
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答