您的位置:

JS生成时间戳的全面解析

时间戳,通俗来说就是记录某个事件发生时的时间,以数字方式表示。在前端开发中,我们经常需要获取当前时间戳或将普通时间格式转化成时间戳格式。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实现时间日期的加减运算等方面。希望能够对前端开发者们有所帮助。