将时区偏移小时数转换为时区偏移(军事?)小时

Convert timezone offset number of hours to timezone offset in (military?) hours

本文关键字:小时 时区 军事 转换      更新时间:2023-09-26

我正在使用WordPress和jQuery时间选择器。

Wordpress以小时为单位给出时区偏移:如+2或-3.5

jQuery Timepicker获取军事时偏移量:+0200或-0330

我现在用的是这样的:

gmt_offset = -4;
hrs_offset = gmt_offset.replace('-', '-0') + "00";
= -0400

但如果偏移量不是一个负数,则会中断。

gmt_offset = -3.5;
hrs_offset = gmt_offset.replace('-', '-0') + "00";
= -03.500  //No good...
need: -0330

Ack !有人能帮我弄明白吗?

使用.split(".")将偏移量分割为2部分。

给小时部分一个"0",如果它小于10。如果初始值为负数,则在后面加上负号。

var negative = hour < 0 ? true : false;
hour = Math.abs(hour) < 10 ? "0" + Math.abs(hour) : Math.abs(hour);
hour = negative ? "-" + hour : "+" + hour;

要计算分钟部分,请将其乘以6。

(time[1]*6).toString()

这是最后一个函数:

function convertOffset(gmt_offset) {
    var time = gmt_offset.toString().split(".");
    var hour = parseInt(time[0]);
    var negative = hour < 0 ? true : false;
    hour = Math.abs(hour) < 10 ? "0" + Math.abs(hour) : Math.abs(hour);
    hour = negative ? "-" + hour : "+" + hour;
    return time[1] ? hour+(time[1]*6).toString() : hour + "00";
}
document.write(convertOffset(-3.5));

看到演示。

function convert(gmt_offset) {
     var sign ="+";
     if(gmt_offset < 0) {
         sign="-";
         gmt_offset *= -1;
     }
     var hours = "0"+Math.floor(gmt_offset).toString();
     var minutes = "0"+(Math.round(gmt_offset % 1 * 60)).toString();
     return sign + hours.substr(hours.length - 2) + minutes.substr(minutes.length - 2);
}

下面是一个简洁的版本:

function militaryGMTOffsetFromNumeric(offset) {
   var dt = new Date(
      Math.abs(offset) * 3600000 + new Date(2000, 0).getTime()
   ).toTimeString();
   return (offset < 0 ? '-' : '+') + dt.substr(0,2) + dt.substr(3,2);
}

例如,militaryGMTOffsetFromNumeric(-3.5)返回-0330