Node.js 将日期字符串转换为 unix 时间戳
Node.js converting date string to unix timestamp
我正在尝试将日期字符串转换为 Node.js 中的 unix 时间戳。
我下面的代码在我的客户端上运行完美,但是当我在我的服务器上运行它时,我得到一个错误:
(node:19260) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: input.substring is not a function
我的代码:
function dateParser(input) {
// function is passed a date and parses it to create a unix timestamp
// removing the '.000' from input
let finalDate = input.substring(0, input.length - 4);
return new Date(finalDate.split(' ').join('T')).getTime();
}
我的输入示例是 2017-09-15 00:00:00.000
那么,为什么上面的方法在我的客户端上有效,但在 Node 中却无效,我该如何复制 Node 中的功能?
根据输入的 DateTime 字符串创建日期对象,然后使用 getTime()
并将结果除以 1000 以获得 UNIX 时间戳。
var unixTimestamp = Math.floor(new Date("2017-09-15 00:00:00.000").getTime()/1000);
console.log(unixTimestamp);
我建议使用 momentjs 来处理日期。使用 momentjs 你可以这样做:
moment().unix(); // Gives UNIX timestamp
如果您已经有一个日期并且想要获取相对于该日期的 UNIX 时间戳,您可以这样做:
moment("2017-09-15 00:00:00.000").unix(); // I have passed the date that will be your input
// Gives out 1505413800
使用 momentjs 处理 date/time 时效率很高。
Unix 时间戳是从特定日期算起的秒数。 Javascript 函数 getTime() returns 从同一特定日期到您指定日期的毫秒数。
因此,如果您将函数的结果除以数字 1000,您将获得 Unix 时间戳并将从毫秒转换为秒。不要忘记忽略小数位。
您收到的错误消息是因为输入的值不是字符串。
如果系统时区未设置为 UTC,则 2 个选项的结果略有不同
选项 1 - 忽略系统时区
console.log(Math.floor(new Date("2020-01-01").getTime()/1000));
> 1577836800
选项 2 ("moment.js") - 时间戳将因系统时区而异
console.log(moment('2020-01-01').unix());
> 1577854800
我正在尝试将日期字符串转换为 Node.js 中的 unix 时间戳。
我下面的代码在我的客户端上运行完美,但是当我在我的服务器上运行它时,我得到一个错误:
(node:19260) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: input.substring is not a function
我的代码:
function dateParser(input) {
// function is passed a date and parses it to create a unix timestamp
// removing the '.000' from input
let finalDate = input.substring(0, input.length - 4);
return new Date(finalDate.split(' ').join('T')).getTime();
}
我的输入示例是 2017-09-15 00:00:00.000
那么,为什么上面的方法在我的客户端上有效,但在 Node 中却无效,我该如何复制 Node 中的功能?
根据输入的 DateTime 字符串创建日期对象,然后使用 getTime()
并将结果除以 1000 以获得 UNIX 时间戳。
var unixTimestamp = Math.floor(new Date("2017-09-15 00:00:00.000").getTime()/1000);
console.log(unixTimestamp);
我建议使用 momentjs 来处理日期。使用 momentjs 你可以这样做:
moment().unix(); // Gives UNIX timestamp
如果您已经有一个日期并且想要获取相对于该日期的 UNIX 时间戳,您可以这样做:
moment("2017-09-15 00:00:00.000").unix(); // I have passed the date that will be your input
// Gives out 1505413800
使用 momentjs 处理 date/time 时效率很高。
Unix 时间戳是从特定日期算起的秒数。 Javascript 函数 getTime() returns 从同一特定日期到您指定日期的毫秒数。
因此,如果您将函数的结果除以数字 1000,您将获得 Unix 时间戳并将从毫秒转换为秒。不要忘记忽略小数位。
您收到的错误消息是因为输入的值不是字符串。
如果系统时区未设置为 UTC,则 2 个选项的结果略有不同
选项 1 - 忽略系统时区
console.log(Math.floor(new Date("2020-01-01").getTime()/1000));
> 1577836800
选项 2 ("moment.js") - 时间戳将因系统时区而异
console.log(moment('2020-01-01').unix());
> 1577854800