6

我正在使用 moment 将毫秒转换为日期和时间它给了我预期的正确输出,但是在转换相同的日期+时间时它给了我错误的输出。

我使用了 unix,valueOf 矩方法。

const moment = require('moment-timezone');

console.log(moment.tz(1567032260763,'x','America/Chicago').format('MM-DD-YYYY hh:mm:ss A')) //gives me 08-28-2019 05:44:20 PM which is right.

console.log(moment('08-28-2019 05:44:20 PM','MM-DD-YYYY hh:mm:ss A').valueOf());  // gives me 1567032260000 instead of 1567032260763

请指导我哪里错了!

4

2 回答 2

0

function callMoment() {
console.log(moment.tz(1567032260763,'x','America/Chicago').format('MM-DD-YYYY hh:mm:ss A'))

console.log(moment.tz('08-28-2019 05:44:20.763 PM','MM-DD-YYYY hh:mm:ss.S A','America/Chicago').valueOf());
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment-with-locales.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.26/moment-timezone-with-data.min.js"></script>
<button onclick="callMoment()">Call Me</button>

您在将其转换回来时会丢失几毫秒。

console.log(moment.tz(1567032260763,'x','America/Chicago').format('MM-DD-YYYY hh:mm:ss A'))

console.log(moment.tz('08-28-2019 05:44:20.763 PM','MM-DD-YYYY hh:mm:ss.S A','America/Chicago').valueOf());

现在输出是正确的。

于 2019-08-29T12:44:54.990 回答
0

您需要在此行中添加时区:

moment('08-28-2019 05:44:20 PM','MM-DD-YYYY hh:mm:ss A').tz('America/Chicago').valueOf();
于 2019-08-29T11:49:12.937 回答