我有以下功能:
var input = "December 25, 2018 01:02:20";
var fmt = 'MMMM DD, YYYY HH:mm:ss';
var currentTimeZone = "utc";
function convertUtcToLocalViceVersa() {
console.log(input);
var m = moment.utc(input, fmt);
if(currentTimeZone == 'utc') {
input = m.local().format(fmt);
currentTimeZone = "local";
} else {
input = m.utc().format(fmt);
currentTimeZone = "utc";
}
}
在我的HTML中,我有一个调用convertUtcToLocalViceVersa()函数的按钮;
我看到的问题是,按下按钮后说了5次..输入似乎不是'像我想要的那样'在utc和local之间来回切换'。我怎样才能做到这一点?
注意:我想确保每次单击该按钮时,都会使用'input'文本而不是对moment对象的引用。
答案 0 :(得分:0)
问题是您始终使用moment.utc
在UTC模式下解析input
。
如果分支使用moment()
(本地模式)或moment.utc
(UTC模式)基于currentTimeZone
值,则必须在内部移动解析代码。
这是一个实时样本:
var input = "December 25, 2018 01:02:20";
var fmt = 'MMMM DD, YYYY HH:mm:ss';
var currentTimeZone = "utc";
function convertUtcToLocalViceVersa() {
console.log(input);
// var m = moment.utc(input, fmt);
if(currentTimeZone == 'utc') {
var m = moment.utc(input, fmt);
input = m.local().format(fmt);
currentTimeZone = "local";
} else {
var m = moment(input, fmt);
input = m.utc().format(fmt);
currentTimeZone = "utc";
}
console.log(input);
}

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>
<button onclick="convertUtcToLocalViceVersa()">Convert</button>
&#13;
Local vs UTC vs Offset指南是一个非常有用的指南,可以理解矩解析的工作原理。