将时区偏移量“+00:00”转换为分钟

Convert timezone offset "+00:00" to minutes

我有一个函数 returns timezone offset 字符串(如“+03:00”) 我想使用 moment.js 或内置纯文本 javascript 选项

将此字符串转换为分钟偏移量(“+03:00”应变为 180)

我该怎么做?

只需获取偏移小时数,然后将其乘以 60,如下所示:

function parseOffset(offset){
   var minutesOffset = (parseInt(offset[1] + offset[2]) * 60)

   console.log(parseInt(offset[0] + minutesOffset.toString()))
}
  
parseOffset("+03:00");
parseOffset("-02:00");

上面的returns也是负偏移

从普通 javascript 中的日期对象获取分钟的唯一方法是使用

.getTimezoneOffset() - 但根据您的问题,情况似乎并非如此。

据我所知,没有其他方法可以将“+03:00”解析为分钟。

您可以尝试使用Parse Offset method of momentjs timezone

用法:

var zone = moment.tz.zone('America/New_York');
zone.parse(Date.UTC(2012, 2, 19, 8, 30)); // 240

使用 vanilla JS,你可以使用下面的方法获取会议记录,它会接受正负偏移。

let offset = '-03:30';

let [h, m] = offset.split(':');

let hours = Number.parseInt(h);
let minutes = Number.parseInt(m);

let totalMinutes = hours * 60 + (hours < 0 ? (-minutes) : minutes);

我找到了解决方案:

moment().utcOffset("+03:00").utcOffset() // returns 180
moment().utcOffset("-09:00").utcOffset() // returns -540