如何解决如何根据时区偏移量减去时间
我尝试寻找答案,但找不到与时区偏移量有关的特定答案。因此,如果已经存在任何答案,则发表同样的歉意。
我在项目中有一个需求,我需要根据用户指定的时间和用户提供的时区偏移值将时间转换为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实现这一目标吗?
解决方法
如果偏移量考虑了夏令时,则应该可以:
const the_date = '2020-11-05T15:00:00.000';
const offset = 2;
const utc_time = moment.utc(the_date).subtract(offset,'hours');
,
经过更多研究和尝试,我能够将其转换。除了基督徒的回答(https://stackoverflow.com/a/64701083/7584240)之外,还发布答案,因此,如果有人在寻找答案,他们将有另一种选择:
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';
,
不清楚您要尝试哪种转换方式。如果您是从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"
但是您应该注意,偏移量与时区不同。时区可以有多个偏移,其中一个偏移将在给定的时间点应用。这些偏移量可能会由于夏时制和标准时间的变化而发生变化。因此,要求用户选择“根据其本地时间的时区偏移量值”是有问题的-因为您可能会将偏移量应用于错误的时间点。有关更多详细信息,请参见timezone tag wiki中的“时区!=偏移”。
您还应该了解Moment's project status,并可能选择其他库。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。