如何在Node JS中将大数转换为普通数?

时间:2018-07-16 09:50:00

标签: javascript node.js momentjs bignum

我收到的数据如下:

deviceTimestamp:1531564520188828

我想将此时间戳转换为人类日期并使用以下代码:

moment.unix(timestamp).format('dddd, MMMM Do, YYYY h:mm:ss A');

但是当我console.log(deviceTimestamp)时,它会向我返回

BigNumber { s: 1, e: 15, c: [ 15, 31656237268093 ] },

时间戳转换不起作用。

4 个答案:

答案 0 :(得分:2)

恕我直言,您正在尝试执行以下操作:

deviceTimestamp = 1531564520188828;

var d = new Date(deviceTimestamp);
console.log(d);
console.log(d.getDate() + '/' + (d.getMonth()+1) + '/' + d.getFullYear());

var dateString = d.toGMTString();
console.log(dateString);

注意

  • 似乎是错误的时间戳记,因此是无效的年份。
  • 这是使用Vanilla JS的方法。

答案 1 :(得分:0)

您看到的数字似乎是1970年1月1日午夜以来的微秒数。

忘记Unix时间戳,并将JavaScript时间戳除以您的数字1,000。

var deviceTimestamp = 1531564520188828;

var date = moment(deviceTimestamp/1000).format('dddd, MMMM Do, YYYY h:mm:ss A');

console.log(date);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"></script>

答案 2 :(得分:0)

Moment.js的玩法非常有趣。

let deviceTimestamp = 1531564520188828
var date = moment(deviceTimestamp/1000).format('dddd, MMMM Do, YYYY h:mm:ss A');

如果您想详细了解Moment.js,请打开https://momentjs.com/:右键单击,然后单击“检查”,然后尝试在控制台中尝试所有类型的可能性。

Click here to see console result

答案 3 :(得分:-1)

function removeLast6(str) {
   str = str.toString();
   str = str.slice(0, -6);
   str = parseInt(str);
   return str;
}

function convertToHumanDate(timestamp) {
   return moment.unix(timestamp).format('dddd, MMMM Do, YYYY h:mm:ss A');
}

const timestampNumber = await removeLast6(1531564520188828);

const date = await convertToHumanDate(timestampNumber);