小白弄明白了 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 库的使用,以便在以后的项目,遇到处理时间日期格式时,不需要查询资料,能够闭眼手写代码,提高效率节省时间。

posted @ 2023-09-05 11:31  BOBO~  阅读(743)  评论(0编辑  收藏  举报