我使用moment.js库获得了以下javascript代码。我们一直遇到与utc转换的问题。 下面的代码返回此结果:
Deprecation warning: moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release.
Please refer to https://github.com/moment/moment/issues/1407 for more info.
1: 2014-11-17T19:16:00+00:00
2: 2014-11-17T19:16:00+00:00
3: 2014-11-17T13:16:00-06:00
为什么第一个返回相同但是给出了已弃用的警告?我正在使用ISO字符串。
代码:
var r = {Start:'2014-11-17T20:47:00Z', End:'2014-11-17T19:16:00Z'};
console.log(moment(r.Start).local());
var e = moment(r.Start);
var f = moment(r.End);
var res = {exDate: moment(e).format("MM/DD/YYYY"),
exStartTime: moment(e).format("MM/DD/YYYY hh:mm A"),
exEndTime: moment(f).format("MM/DD/YYYY hh:mm A")}
console.log(res );
console.log("1: " + moment(res.exEndTime).utc().format());
console.log("2: " + moment.utc(res.exEndTime).format());
console.log("3: " + moment(res.exEndTime).format()); // testing default local format.
答案 0 :(得分:2)
错误是因为包装日期已经包含了片刻。 你应该使用这样的时刻:
var r = {Start:'2014-11-17T20:47:00Z', End:'2014-11-17T19:16:00Z'};
console.log(moment(r.Start).local());
var e = moment(r.Start);
var f = moment(r.End);
var res = {
exDate: e.format("MM/DD/YYYY"),
exStartTime: e.format("MM/DD/YYYY hh:mm A"),
exEndTime: f.format("MM/DD/YYYY hh:mm A")
}
console.log(res );
console.log("1: " + f.utc().format());
console.log("2: " + f.format());
console.log("3: " + f.format()); // testing default local format.
答案 1 :(得分:1)
错误由最后三行产生。例如,当您致电moment(res.exEndTime)
时,已经是格式为MM/DD/YYYY hh:mm A
的字符串。您还在冗余地调用moment
。基本上,你有:
moment(moment(moment('2014-11-17T19:16:00Z')).format("MM/DD/YYYY hh:mm A")).format()
那太多时刻了!