我正在使用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
的Ack!有人可以帮我解决这个问题吗?
答案 0 :(得分: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));
请参阅DEMO。
答案 1 :(得分:1)
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);
}
答案 2 :(得分: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
。