1

WordPress と jQuery Timepicker を使用しています。

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

あっ!誰かがこれを理解するのを手伝ってくれますか?

4

3 に答える 3

3

を使用して、オフセットを 2 つの部分に分割し.split(".")ます。

時間の部分が 10 未満の場合は「0」を付けます。その後、元が負の場合は負の符号を追加します。

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

デモを参照してください。

于 2013-03-28T17:12:32.443 に答える
2
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);
}
于 2013-03-28T17:33:34.110 に答える
1

これはうまくコンパクトなバージョンです:

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

于 2013-03-28T18:45:14.240 に答える