好吧,所以我现在已经试着打开和关闭了两个星期了,而且我很接近,但我只需要最后一次推动。我正在使用一个返回大量事件的API,所有事件都在不同的时区。 API简单地给了我-5
,-7
等的偏移...我使用moment.js来解析时间和时区,然后返回用户时区中的事件只接受"完整"时区字符串,例如-07:00
。所以我开始用以下方法操纵JS中的数据:
// number padding
function pad(n) {
if (n < 10 & n >=0){
return ("0" + n);
}
if(n < 0 & n > -11){
return ("-0" + Math.abs(n));
}
return n;
}
var timedate = '2017/03/02 1:05',
ampm = 'PM',
zone = '-5',
padded = pad(zone),
adjustedZone = parseInt(padded).toFixed(2),
adjustedTwo = adjustedZone.replace('.', ':');
这非常非常接近,但.toFixed
除去我的前导零并简单地返回-5:00
。
如何在此方案中保留前导零?我还需要支持-10:00
时区,也可能支持任何正时区,虽然我的目标用户是北美人,但是支持所有时区的GIANT加号。
非常感谢任何帮助,您还可以看到非常混乱的代码集here。
答案 0 :(得分:1)
注意:填充中-9不是-11,请参阅下面的代码&amp; 你非常接近,只需“填补所需输出的时间”(见下面的输出):
// number padding
function pad(n) {
if (n < 10 & n >=0){
return ("0" + n);
}
// NOTE: -9 not -11
if(n < 0 & n >= -9){
return ("-0" + Math.abs(n));
}
return n;
}
var timedate = '2017/03/02 1:05',
ampm = 'PM',
zone = '-5',
//padded = pad(zone),
adjustedZone = parseInt(zone).toFixed(2),
adjustedTwo = adjustedZone.replace('.', ':');
//console.log(padded);
console.log('adjustedZone: ' + adjustedZone);
console.log('adjustedTwo: ' + adjustedTwo);
// pad the minutes of time for desired output
var a = adjustedTwo.split(':');
var output = pad(a[0]) + ':' + a[1];
console.log('final output: ' + output);
zone = '-10';
a = parseInt(zone).toFixed(2).split('.');
output = pad(a[0]) + ':' + a[1];
console.log('final output (for zone = ' + zone + '): ' + output);
答案 1 :(得分:0)
为什么你不能在JS时使用COUNTRIES = {
"CN": "CHINA",
"US": "USA"
}
utcOffset