记录一个 Nodejs 中获取秒级时间戳的方法

发布于 1周前 作者 yibo5220 来自 nodejs/Nestjs

记录一个 Nodejs 中获取秒级时间戳的方法
/**
* 获取时间戳
* @param date 日期:2017/03/03 13:49:55
* @param num 当前日期的前或后推几年 /月 /天 /小时 /分钟 /秒
* @param type yy 年 /mm 月 /dd 天 /h 小时 /m 分钟 /s 秒
* @time 2017/08/31
* @returns {string}
*/
function timestamps (date = ‘’, num = 0, type = ‘dd’) {
let today;
if (date == ‘’ || date == 0) {
today = Date.parse(new Date()).toString();
} else {
today = Date.parse(new Date(date)).toString();
}
let result = 0;
if (num != 0 && num != ‘’) {
num = parseInt(num);
if(type == ‘yy’ || type == ‘mm’) {
let now;
if (date == ‘’ || date == 0) {
now = new Date();
} else {
now = new Date(date);
}
let year = now.getFullYear();
let month = parseInt(now.getMonth()) + 1;
let day = now.getDate();
let hours = now.getHours();
let minutes = now.getMinutes();
let seconds = now.getSeconds();
if (type == ‘yy’) {
year = parseInt(year) + num;
} else {
if (num > 0) {
let m = parseInt(month) + num;
if (m > 12) {
let rem = m % 12;
let remint = Math.floor(m / 12);
if (rem != 0) {
year = parseInt(year) + remint;
month = rem;
} else {
year = parseInt(year) + remint -1;
month = ‘12’;
}
} else {
month = m;
}
} else {
let m = parseInt(month) + num;
if (m == 0) {
year = parseInt(year) - 1;
month = ‘12’;
} else if (m > 0) {
month = m;
} else {
if (m > -12) {
month = parseInt(m) + 12;
year = parseInt(year) - 1;
} else {
let rem = m % 12;
let remint = parseInt(m / 12) - 1;
month = parseInt(rem) + 12;
year = parseInt(year) + remint;
}
}
}
}
let format = this.getFormatDate(year, month, day);
let res_date = format[0] + ‘/’ + format[1] + ‘/’ + format[2] + ’ ’ + hours + ‘:’ + minutes + ‘:’ + seconds;
result = Date.parse(new Date(res_date)).toString();
} else if (type == ‘h’) {
result = today / 1000 + 3600 * num;
return result.toString();
} else if (type == ‘m’) {
result = today / 1000 + 60 * num;
return result.toString();
} else if (type == ‘s’) {
result = today / 1000 + num;
return result.toString();
} else {
result = today / 1000 + 3600 * 24 * num;
return result.toString();
}
} else {
result = today;
}
return Math.round(result / 1000);
}


10 回复

Math.round(new Date / 1000)


楼主这个,用 code block 可好 = =

感谢指点,第一次发,没注意

嗯嗯,主要是为了能加上一个某个时间往后推或者往前推这么一个功能,js 还在学习当中,感谢指点

#5 简单来说就是 Moment 的 Manipulate 功能

performance api…

了解了一下 moment.js 和 performance api 功能很强大,很有帮助,谢谢

在 Node.js 中获取秒级时间戳是一个常见的任务,通常用于记录日志、生成唯一标识符等场景。秒级时间戳是指从1970年1月1日(UTC)到当前时间的总秒数。下面是一个简单的方法来获取秒级时间戳:

使用 Date 对象

Node.js 内置的 Date 对象提供了便捷的方法来获取当前时间的时间戳。以下是一个示例代码:

// 获取当前时间的毫秒级时间戳
const millisecondsTimestamp = Date.now();

// 将毫秒级时间戳转换为秒级时间戳
const secondsTimestamp = Math.floor(millisecondsTimestamp / 1000);

console.log(`毫秒级时间戳: ${millisecondsTimestamp}`);
console.log(`秒级时间戳: ${secondsTimestamp}`);

使用 process.hrtime()

虽然 process.hrtime() 主要用于高精度的时间测量(以纳秒为单位),但我们也可以利用它来获取秒级时间戳。不过,这种方法相对复杂一些,通常用于需要高精度时间测量的场景。

// 获取高精度时间(纳秒为单位)
const [seconds, nanoseconds] = process.hrtime();

// 将高精度时间转换为秒级时间戳(注意:nanoseconds / 1e9 是为了将纳秒转换为秒)
const highResSecondsTimestamp = seconds + nanoseconds / 1e9;

// 取整得到秒级时间戳
const highResSecondsTimestampFloored = Math.floor(highResSecondsTimestamp);

console.log(`高精度秒级时间戳: ${highResSecondsTimestampFloored}`);

以上两种方法都可以有效地获取秒级时间戳,根据你的具体需求选择合适的方法即可。

回到顶部