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

  • 相关阅读:
    总结:JavaEE的Servlet中HttpServletRequest请求对象调用各种API方法结果示例
    1109. 航班预订统计
    根据MediatR的Contract Messages自动生成Minimal WebApi接口
    vue动态数据在列表展示
    Apache Flink 中作业图与执行图的深入解析
    Java#30(扩展知识:可变参数与Collections)
    spring security 用户授权原理
    概率神经网络的主要思想,神经网络随机数预测
    聊聊分布式架构09——分布式中的一致性协议
    【Python 趣味习题】
  • 原文地址:https://www.cnblogs.com/pocn/p/17679201.html