为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

德玛西亚99 2023-07-14 15:10:17
我尝试寻找答案,但找不到与时区偏移有关的特定答案。因此,如果已经有任何答案,那么发布同样的内容真的很抱歉。我在项目中有一个需求,我需要将时间转换为UTC或GMT基于用户指定的时间和用户提供的时区偏移值。基本上,用户根据他的本地时间提供他的本地时间和时区偏移值。我需要将其转换为 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.000Z。moment-js我也用的。有人可以帮我如何使用 Node.js 或 Moment.js 实现这一点吗?
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

如果偏移考虑夏令时,您应该能够执行以下操作:


const the_date = '2020-11-05T15:00:00.000';

const offset = 2;

const utc_time = moment.utc(the_date).subtract(offset, 'hours');


查看完整回答
反对 回复 2023-07-14
?
慕斯王

TA贡献1864条经验 获得超2个赞

目前尚不清楚您要尝试转换哪种方式。如果要将 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 的项目状态,并可能选择不同的库。


查看完整回答
反对 回复 2023-07-14
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

因此如果有人正在寻找答案,他们将有另一个选择:

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';



查看完整回答
反对 回复 2023-07-14
  • 3 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信