我正在使用moment.js v2.5,utcOffset
在v2.5中不可用。我只获得当前用户的Time.now.utc_offset //19800
(UTC偏移量为
印度)来自铁路后端。
zone()
和utcOffset()
会返回彼此相反的值(请查看包含的代码片段)?zone()
方法计算适当的时间?
$(document).ready(function(){
moment.suppressDeprecationWarnings = true
$('.utc span').text(moment().utcOffset());
$('.zone span').text(moment().zone());
// 19800/60 => 330
$('.india.zone span').text(moment(1519043028734).zone(330).format('HH:mm'))
$('.india.utc span').text(moment(1519043028734). utcOffset(330).format('HH:mm'))
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>
<p class="zone">Zone: <span></span></p>
<p class="utc">UTC: <span></span></p>
<p class="india zone">Zone:<span></span></p>
<p class="india utc">UTC:<span></span></p>
&#13;
答案 0 :(得分:1)
以分钟为单位获取UTC偏移量。
注意:与
moment.fn.zone
不同,此函数返回UTC的实际偏移量,而不是反向偏移量(由Date.prototype.getTimezoneOffset
返回)。
所以,基本上,zone()
具有相同的Date.prototype.getTimezoneOffset
输出:
时区偏移是UTC与本地时间之间的差异(以分钟为单位)。请注意,这意味着如果本地时区落后于UTC,则偏移量为正,如果前置,则偏移量为负。例如,对于时区UTC + 10:00(澳大利亚东部标准时间,符拉迪沃斯托克时间,查莫罗标准时间),将返回-600。
要使用zone()
获取适当的时间,您只需将符号更改为偏移量(例如-330
而不是300
)
$(document).ready(function(){
moment.suppressDeprecationWarnings = true
$('.utc span').text(moment().utcOffset());
$('.zone span').text(moment().zone());
// 19800/60 => 330
$('.india.zone span').text(moment(1519043028734).zone(330*-1).format('HH:mm'))
$('.india.utc span').text(moment(1519043028734). utcOffset(330).format('HH:mm'))
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>
<p class="zone">Zone: <span></span></p>
<p class="utc">UTC: <span></span></p>
<p class="india zone">Zone:<span></span></p>
<p class="india utc">UTC:<span></span></p>
&#13;