小白弄明白了 unix 时间戳的转换问题

  • 小白弄明白了 unix 时间戳的转换问题已关闭评论
  • 113 次浏览
  • A+
所属分类:Web前端
摘要

小白对于将 unix 时间戳转换为日期时间和使用日期时间转换为 unix 时间戳,在项目中见到过很多,每次使用时不是用现有的方法转换就是网上搜索方法。

小白对于将 unix 时间戳转换为日期时间和使用日期时间转换为 unix 时间戳,在项目中见到过很多,每次使用时不是用现有的方法转换就是网上搜索方法。

小白见过各种转换方式觉得moment库很是方便,但是用法较多,所以小白决定整理一下。以后再遇到时间日期转换可能手写代码而省去翻看资料的时间。

vue中使用moment.js库需要通过  npm install moment   来安装。

在使用时需要通过   import moment from 'momennt'  来引入组件中。

1. 这里是一些常见的用法:

currentDate: moment().format('YYYY-MM-DD'), // 获取当前日期 currentTime: moment().format('HH:mm:ss'), // 获取当前时间 formattedDate: moment('2023-08-25').format('MMMM Do YYYY'), // 格式化日期 diffInDays: moment('2023-08-25').diff(moment(), 'days'), // 计算日期差异 isLeapYear: moment('2023-08-25').isLeapYear() // 检查是否是闰年

下面开始演示 日期和 Unix 时间戳 的转换

1. 使用 moment 将日期转换为Unix时间戳:

const dateInt = moment('2023-08-25').valueOf(); 1800000000000 //valueOf() 方法将 Moment 对象转换为 Unix 时间戳 (自UTC时间 1970年 1月 1日零点以来的毫秒数)

2. 使用 moment 将时间转换为 Unix 时间戳,再转换回时间

const unixTimestamp = moment('2023-08-25 17:56:00').unix(); // 转换为 Unix 时间戳 const formattedDate = moment.unix(unixTimestamp).format('YYYY-MM-DD HH:mm:ss'); // 格式化日期时间 console.log(unixTimestamp); // 输出:1671963360 console.log(formattedDate); // 输出:2023-08-25 17:56:00

特别注意:unix()和valueOf()的区别,valueOf 获取日期对象的毫秒级时间戳,unix 获取日期对象的秒级时间戳。而 Unix 时间戳一般是秒级的。

moment 中还有一个处理时区的插件 tz,它允许我们在具体的时区进行日期和时间的转换和处理。

1. vue中使用 tz 需要安装moment库 和 moment-timezone 插件。可以使用npm 或 yarn 进行安装 npm install moment moment-timezone

2. 在组件中使用时,需要引入

import moment from 'moment'; import 'moment-timezone';

3. 下面是一些常见用法

// 获取当前时间,并将其转换为指定时区的时间 const now = moment(); const nyTime = moment.tz(now, 'America/New_York'); 	     // 使用指定时区创建一个 Moment 对象 const parisTime = moment.tz('2023-08-31 12:00', 'Europe/Paris'); 	     // 将时间从当前时区转换为目标时区 const londonTime = moment.tz('2023-08-31 12:00', 'Europe/London').tz('America/New_York'); 	     // 获取所有可用的时区 const timezones = moment.tz.names(); 	     // 获取指定时区在当前时间的偏移量(以分钟为单位) const offset = moment.tz('America/New_York').utcOffset();

    tz 还可以配合 format 一起使用:

moment.tz('2022-12-31 23:59:59', 'America/New_York').format('YYYY-MM-DD HH:mm:ss z') //或者 const time = '2022-12-31 23:59:59'; const tz = 'America/New_York'; const fmt = 'YYYY-MM-DD HH:mm:ss z'; const formattedDateTime = moment(time).tz(tz).format(fmt); //第二种方式为旧版本使用方式

虽然是一个小工具库,但是项目中使用率还挺高,所以小白觉得值得用心整理。整理的过程也是自己学习的过程,同时也能够当作笔记,在遗忘时再回来翻看。小白希望通过这次整理能够完全掌握menent 库的使用,以便在以后的项目,遇到处理时间日期格式时,不需要查询资料,能够闭眼手写代码,提高效率节省时间。