为什么 moment js 给出的毫秒数不一样?
Why moment js gives different milliseconds?
我使用 moment js 得到同一日期不同毫秒的错误。
我正在从服务器 ('-2208988800000'
) 获取数据。我转换了 'DD-MMM-YYYY'
中的值。现在我又想要相同的毫秒数,为什么我在同一日期得到不同的毫秒数?这是我的代码
http://plnkr.co/edit/1QoWLoFqkNAe2ebZ0V01?p=preview
我有两个控制台 x1
和 x2
。他们是不同的,为什么?
var x = '-2208988800000'
var d = new Date(moment(new Date(parseInt(x)).toUTCString()).format('DD-MMM-YYYY'));
console.log(d)
var x2 = moment(new Date(d).toUTCString()).format('x');
console.log(x2)
// why x1 and x2 is different
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
如何获得相同的值?
您在时刻对象、日期对象和字符串之间来回进行了大量操作。目前还不清楚您真正想要完成什么,但 none 应该是必要的。
至于结果,第一次调用日期构造函数是获取字符串值'31-Dec-1899'
,因此您可以将示例简化为:
var d = new Date('31-Dec-1899');
console.log(+d);
这将根据您使用的浏览器 运行 给出不同的结果(因为日期对象的解析实现在非标准格式时取决于实现),并且会随时间变化代码为 运行 的区域(因为假定该值是当地时间)。
对我来说,运行宁 Chrome 70 on Windows 10,在美国太平洋时区,这记录 -2209046400000
。您可能会得到不同的结果。
一般情况下,不要做那么多的操作。您可能需要的大多数功能都内置在 Moment 中。任何时候您发现自己转换为字符串并返回对象,或使用 Date
构造函数,您都可能引入错误。
当您将日期格式设置为 DD-MMM-YYYY
时,您会损失小时和分钟,这是
的部分原因
尝试将您的代码更新为
var d = new Date(moment(new Date(parseInt(x)).toUTCString()).format('DD-MMM-YYYY HH:mm:ss'));
你会得到一个更接近的时间戳
我使用 moment js 得到同一日期不同毫秒的错误。
我正在从服务器 ('-2208988800000'
) 获取数据。我转换了 'DD-MMM-YYYY'
中的值。现在我又想要相同的毫秒数,为什么我在同一日期得到不同的毫秒数?这是我的代码
http://plnkr.co/edit/1QoWLoFqkNAe2ebZ0V01?p=preview
我有两个控制台 x1
和 x2
。他们是不同的,为什么?
var x = '-2208988800000'
var d = new Date(moment(new Date(parseInt(x)).toUTCString()).format('DD-MMM-YYYY'));
console.log(d)
var x2 = moment(new Date(d).toUTCString()).format('x');
console.log(x2)
// why x1 and x2 is different
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
如何获得相同的值?
您在时刻对象、日期对象和字符串之间来回进行了大量操作。目前还不清楚您真正想要完成什么,但 none 应该是必要的。
至于结果,第一次调用日期构造函数是获取字符串值'31-Dec-1899'
,因此您可以将示例简化为:
var d = new Date('31-Dec-1899');
console.log(+d);
这将根据您使用的浏览器 运行 给出不同的结果(因为日期对象的解析实现在非标准格式时取决于实现),并且会随时间变化代码为 运行 的区域(因为假定该值是当地时间)。
对我来说,运行宁 Chrome 70 on Windows 10,在美国太平洋时区,这记录 -2209046400000
。您可能会得到不同的结果。
一般情况下,不要做那么多的操作。您可能需要的大多数功能都内置在 Moment 中。任何时候您发现自己转换为字符串并返回对象,或使用 Date
构造函数,您都可能引入错误。
当您将日期格式设置为 DD-MMM-YYYY
时,您会损失小时和分钟,这是
尝试将您的代码更新为
var d = new Date(moment(new Date(parseInt(x)).toUTCString()).format('DD-MMM-YYYY HH:mm:ss'));
你会得到一个更接近的时间戳