时间戳,通俗来说就是记录某个事件发生时的时间,以数字方式表示。在前端开发中,我们经常需要获取当前时间戳或将普通时间格式转化成时间戳格式。JS作为一门重要的前端语言,在这个方面也有着强大的表现能力。
一、JS获取当前时间戳
获取当前时间戳可以使用JS内置对象Date,其getTime()方法可以返回距离1970年1月1日00:00:00 UTC(国际协调时间)的毫秒数,除以1000即可得到当前时间戳。
const timestamp = Math.floor(Date.now() / 1000);
console.log(timestamp);
以上代码中,Math对象中的floor()方法用于向下取整,确保时间戳为整数。
二、JS将普通时间格式转成时间戳
将普通时间格式转换成时间戳也可以使用Date对象的相关方法。我们可以首先将时间格式转换成Date对象,然后再调用getTime()方法即可得到对应时间的时间戳。
以下是一个将普通时间格式(如"2019-07-01 00:00:00")转换成时间戳的示例:
const dateStr = '2019-07-01 00:00:00';
const timestamp = Math.floor(new Date(dateStr).getTime() / 1000);
console.log(timestamp);
三、JS对时间戳进行格式化展示
方式1:手写方法实现格式化
手写方法实现的方式一般可以通过自定义函数来实现。下面我们将时间戳转换成"YYYY-MM-DD hh:mm:ss"的格式:
function formatTimestamp(timestamp) {
const dateObj = new Date(timestamp * 1000);
const year = dateObj.getFullYear();
const month = (`0${dateObj.getMonth() + 1}`).slice(-2);
const day = (`0${dateObj.getDate()}`).slice(-2);
const hours = (`0${dateObj.getHours()}`).slice(-2);
const minutes = (`0${dateObj.getMinutes()}`).slice(-2);
const seconds = (`0${dateObj.getSeconds()}`).slice(-2);
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
const timestamp = 1561939200;
console.log(formatTimestamp(timestamp));
以上代码中,我们首先通过new Date()方法将时间戳转换成Date对象,然后使用Date对象自带的方法获取对应的年、月、日、时、分、秒,最后再使用字符串模板的方式生成格式化后的时间字符串。
方式2:使用第三方库moment.js实现格式化
moment.js是一个时间处理的优秀库,非常受前端开发者的喜欢。它不仅可以格式化时间,还可以进行各种时间的计算和显示。
要使用moment.js进行时间格式化,需要先使用npm或者直接引入moment.js库。下面是一个使用moment.js将时间戳转化成"YYYY-MM-DD hh:mm:ss"格式的示例:
import moment from 'moment';
const timestamp = 1561939200;
console.log(moment(timestamp * 1000).format('YYYY-MM-DD hh:mm:ss'));
四、JS实现倒计时功能
倒计时功能在各种场景下都有非常广泛的使用。直接使用Date对象和setInterval()函数即可轻松实现倒计时功能。以下是一个从当前时间开始倒计时10秒的示例:
function countDown(second) {
let remain = second;
const timer = setInterval(function() {
if (remain <= 0) {
clearInterval(timer);
console.log('倒计时结束!');
} else {
console.log(`距离倒计时结束还剩${remain}秒!`);
remain--;
}
}, 1000);
}
countDown(10);
以上代码中,我们定义了一个countDown()函数,传入倒计时时长(单位为秒),然后在定时器中每秒更新剩余时间,当剩余时间为0时,清除定时器并输出提示信息。
五、JS实现时间戳与Date对象的转换
时间戳与Date对象之间的相互转换也是前端开发中非常常见的需求。以下是一个将时间戳转换成Date对象以及将Date对象转换成时间戳的示例:
function timestampToDate(timestamp) {
return new Date(timestamp * 1000);
}
function dateToTimestamp(dateObj) {
return Math.floor(dateObj.getTime() / 1000);
}
const timestamp = 1561939200;
const dateObj = timestampToDate(timestamp);
console.log(dateObj);
console.log(dateToTimestamp(dateObj));
以上代码中,我们分别定义了两个函数,其中timestampToDate()函数将时间戳转换成Date对象,dateToTimestamp()函数将Date对象转换成时间戳。使用时只需传入对应的参数即可。
六、JS实现延时执行功能
在前端开发中,我们常常需要需要实现某个操作的延时执行,这时候可以使用JS内置函数setTimeout()来实现。以下是一个延时3秒后弹出提示框的示例:
setTimeout(function() {
alert('3秒之后弹出提示框!');
}, 3000);
以上代码中,我们使用setTimeout()函数实现了一个延时3秒后执行的操作。该函数接收两个参数,第一个参数是要执行的函数(可以使用匿名函数),第二个参数是延迟的毫秒数。
七、JS实现定时执行功能
与setTimeout()函数类似,JS还提供了一个函数setInterval()可以实现定时执行某个函数。
以下是一个每隔1秒钟就执行一次的定时器示例:
setInterval(function() {
console.log('每隔1秒钟就会执行一次!');
}, 1000);
以上代码中,我们使用setInterval()函数实现了一个每隔1秒钟执行一次的操作。该函数也接收两个参数,第一个参数是要执行的函数(可以使用匿名函数),第二个参数是间隔的毫秒数。
八、JS生成指定区间范围内的随机数
在前端开发中,生成指定区间范围内的随机数也是非常常见的需求。可以使用Math对象的相关函数轻松实现。
以下是一个生成1~10之间的随机整数的示例:
const randomNum = Math.floor(Math.random() * 10) + 1;
console.log(randomNum);
以上代码中,我们使用Math.random()函数获取0~1之间的随机数,使用Math.floor()函数向下取整,将小数位去除,并加1保证生成的是1~10之间的整数。
九、JS实现时间日期的加减运算
在日期和时间的处理中,加减运算也是日常开发中常用的操作。可以使用Date对象中的相关方法实现。
以下是一个日期加1天、减2天、加1个月、减2个月、加1年、减2年的示例:
const dateObj = new Date();
console.log(dateObj);
dateObj.setDate(dateObj.getDate() + 1);
console.log(dateObj);
dateObj.setDate(dateObj.getDate() - 2);
console.log(dateObj);
dateObj.setMonth(dateObj.getMonth() + 1);
console.log(dateObj);
dateObj.setMonth(dateObj.getMonth() - 2);
console.log(dateObj);
dateObj.setFullYear(dateObj.getFullYear() + 1);
console.log(dateObj);
dateObj.setFullYear(dateObj.getFullYear() - 2);
console.log(dateObj);
以上代码中,我们首先定义了一个Date对象,然后使用setDate()、setMonth()、setFullYear()方法进行日期加减运算,最后输出修改后的Date对象。
总结
本文从多个角度详细阐述了JS生成时间戳及相关操作的实现,内容包含了JS获取当前时间戳、将普通时间格式转成时间戳、JS对时间戳进行格式化展示、JS实现倒计时功能、JS实现时间戳与Date对象的转换、JS实现延时执行功能、JS实现定时执行功能、JS生成指定区间范围内的随机数、JS实现时间日期的加减运算等方面。希望能够对前端开发者们有所帮助。