美文网首页
自动计算日期时间格式

自动计算日期时间格式

作者: BeiYan | 来源:发表于2020-10-30 16:54 被阅读0次
史前最帅程序员
规则(与当前时间相比较) 格式
小于1分钟 刚刚
小于1小时 xx分钟前
今天以内 今天 HH:mm
昨天以内 昨天 HH:mm
当月 dd日 HH:mm
当年 MM月dd日 HH:mm
默认 yyyy年MM月dd日 HH:mm

直接上代码

//日期格式
const FORMAT = {
    DATE_FORMAT: 'yyyy年MM月dd日 HH:mm',
    MONTH_FORMAT: 'MM月dd日 HH:mm',
    DAY_FORMAT: 'dd日 HH:mm',
    TIME_FORMAT: 'HH:mm:ss',
    DATETIME_FORMAT: 'yyyy-MM-dd HH:mm:ss',
    TODAY_FORMAT: '今天 HH:mm',
    YESTERDAY_FORMAT: '昨天 HH:mm'

};

module.exports = {
    /**
     *
     * 自动计算时间格式
     * @param timeStr 日期字符串
     */
    autoFormat(timeStr) {

        //解析日期字符串
        var longTime = Date.parse(timeStr);
        if (isNaN(longTime)) {
            return "日期格式错误";
        }

        var date = new Date(longTime);
        //返回值时间字符串
        var dataStr;
        //传入时间时间戳
        var milliseconds = date.getTime();
        //当前时间戳
        var nowMilliseconds = new Date().getTime();

        var now = new Date();
        //今天凌晨时间戳
        now.setHours(0, 0, 0, 0);
        var nowMs = now.getTime();
        //当月月初时间戳
        now.setDate(1);
        var monthMs = now.getTime();
        //今年年初时间戳
        now.setMonth(1, 1);
        var yearMs = now.getTime();

        //昨天凌晨时间戳
        var yesterdayMs = new Date(nowMs - 86400000).getTime();

        //相差毫秒数
        var num = nowMilliseconds - milliseconds;

        switch (true) {
            //小于0
            case num<0:{
                dataStr = "日期错误";
                break;
            }
            //小于一分钟
            case num<60000:{
                dataStr = "刚刚";
                break;
            }
            //小于一小时
            case num<3600000:{
                var minutes = parseInt(num / 60000);
                dataStr = minutes+"分钟前";
                break;
            }
            //今天以内
            case milliseconds > nowMs: {
                dataStr = this.dateFormat(date, FORMAT.TODAY_FORMAT);
                break;
            }
            //昨天以内
            case milliseconds > yesterdayMs: {
                dataStr = this.dateFormat(date, FORMAT.YESTERDAY_FORMAT);
                break;
            }
            //当月以内
            case milliseconds > monthMs: {
                dataStr = this.dateFormat(date, FORMAT.DAY_FORMAT);
                break;
            }
            //当年以内
            case milliseconds > yearMs: {
                dataStr = this.dateFormat(date, FORMAT.MONTH_FORMAT);
                break;
            }
            default:{
                dataStr = this.dateFormat(date, FORMAT.DATE_FORMAT);
            }

        }
        return dataStr;
    },
    /**
     * 日期格式化
     * @param date Date对象
     * @param format 目标日期格式
     * @returns {*}
     */
    dateFormat(date,format){
        // 获取完整的年份(4位,1970)
        var year = date.getFullYear();
        // 获取月份(0-11,0代表1月)
        var month = date.getMonth() < 9 ? '0' + (date.getMonth()+1) : date.getMonth()+1;
        // 获取日(1-31)
        var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
        // 获取小时数(0-23)
        var hours = date.getHours()< 10 ? '0' + date.getHours() : date.getHours();
        // 获取分钟数(0-59)
        var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
        // 获取秒数(0-59)
        var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();

        format = format.replace(/yyyy/g, year);
        format = format.replace(/MM/g, month);
        format = format.replace(/dd/g, day);
        format = format.replace(/HH/g, hours);
        format = format.replace(/mm/g, minutes);
        format = format.replace(/ss/g, seconds);
        return format;
    }
};

相关文章

  • 自动计算日期时间格式

    规则(与当前时间相比较)格式小于1分钟刚刚小于1小时xx分钟前今天以内今天 HH:mm昨天以内昨天 HH:mm当月...

  • PHP和GO的常用函数对比

    时间日期相关 获取当前时间戳 自定义时间 格式化输出时间戳 字符串格式成日期 日期计算 给定日期计算前后多少天的日...

  • Excel-基础14讲(日期函数)

    1、理解日期、时间,时间计算、日期计算 2、推算日期1.date函数,非常智能,对于非法的年月日数字,该函数会自动...

  • MySQL日期格式化记录一下

    MySQL中常常会用到对日期的格式化,比如按某时间格式计算间隔,按某时间格式统计信息等等,所以整理了一下日期格式化...

  • cgai-time一个简单又实用的时间日期处理python库

    一、简介 cgai-time一个简单又实用的时间日期处理python库,可以快速实现: 日期格式化 日期,时间计算...

  • moment

    moment官方文档 几个方法: (1) 日期格式化 (2) 相对日期 快捷的时间转化-moment 转化: 计算:

  • Android下的几种时间格式转换

    将毫秒转换为小时:分钟:秒格式 将毫秒转换为标准日期格式 标准时间转换为时间戳 计算时间差 计算与当前的时间差

  • 14.Excel的日期运算,如何求时间

    日期与时间运算 日期-更换常规-变成数值 日期、天数本身就是数值可以直接加减 数值-自定义-日期格式/yy 计算 ...

  • iOS 日期操作

    日期操作时间:2017年8月14日 周一 时间戳 1、比较日期大小默认会比较到秒,要记得设置日期格式 2、计算年龄...

  • Mysql日期时间函数

    获取当前日期和时间 格式化 时间提取 时间计算 获取时间位置 组合时间 单位转化

网友评论

      本文标题:自动计算日期时间格式

      本文链接:https://www.haomeiwen.com/subject/qsvdvktx.html