• 时间戳转换成格式化日期


    记录分享一篇鑫哥的格式化日期

    /*
    ** 时间戳转换成指定格式日期
    ** eg. 
    ** dateFormat(11111111111111, 'Y年m月d日 H时i分')
    ** → "2322年02月06日 03时45分"
    */
    var dateFormat = function (timestamp, formats) {
        // formats格式包括
        // 1. Y-m-d
        // 2. Y-m-d H:i:s
        // 3. Y年m月d日
        // 4. Y年m月d日 H时i分
        formats = formats || 'Y-m-d';
    
        var zero = function (value) {
            if (value < 10) {
                return '0' + value;
            }
            return value;
        };
    
        var myDate = timestamp? new Date(timestamp): new Date();
    
        var year = myDate.getFullYear();
        var month = zero(myDate.getMonth() + 1);
        var day = zero(myDate.getDate());
    
        var hour = zero(myDate.getHours());
        var minite = zero(myDate.getMinutes());
        var second = zero(myDate.getSeconds());
    
        return formats.replace(/Y|m|d|H|i|s/ig, function (matches) {
            return ({
                Y: year,
                m: month,
                d: day,
                H: hour,
                i: minite,
                s: second
            })[matches];
        });
    };

    说明:timestamp缺省表示使用当前时间戳,formats默认格式是Y-m-d,例如2020-01-01。

    时间戳显示为多少分钟前,多少天前的JS处理

    方法名为dateDiff,支持一个参数timestamp,必须参数,本方法会自动补全为和JS侧支持的13位数值(因为后端返回时间戳可能只精确到秒)。

    /*
    ** 时间戳显示为多少分钟前,多少天前的处理
    ** eg.
    ** console.log(dateDiff(1411111111111));  // 2014年09月19日
    ** console.log(dateDiff(1481111111111));  // 9月前
    ** console.log(dateDiff(1499911111111));  // 2月前
    ** console.log(dateDiff(1503211111111));  // 3周前
    ** console.log(dateDiff(1505283100802));  // 1分钟前
    */
    var dateDiff = function (timestamp) {
        // 补全为13位
        var arrTimestamp = (timestamp + '').split('');
        for (var start = 0; start < 13; start++) {
            if (!arrTimestamp[start]) {
                arrTimestamp[start] = '0';
            }
        }
        timestamp = arrTimestamp.join('') * 1;
    
        var minute = 1000 * 60;
        var hour = minute * 60;
        var day = hour * 24;
        var halfamonth = day * 15;
        var month = day * 30;
        var now = new Date().getTime();
        var diffValue = now - timestamp;
    
        // 如果本地时间反而小于变量时间
        if (diffValue < 0) {
            return '不久前';
        }
    
        // 计算差异时间的量级
        var monthC = diffValue / month;
        var weekC = diffValue / (7 * day);
        var dayC = diffValue / day;
        var hourC = diffValue / hour;
        var minC = diffValue / minute;
    
        // 数值补0方法
        var zero = function (value) {
            if (value < 10) {
                return '0' + value;
            }
            return value;
        };
    
        // 使用
        if (monthC > 12) {
            // 超过1年,直接显示年月日
            return (function () {
                var date = new Date(timestamp);
                return date.getFullYear() + '年' + zero(date.getMonth() + 1) + '月' + zero(date.getDate()) + '日';
            })();
        } else if (monthC >= 1) {
            return parseInt(monthC) + "月前";
        } else if (weekC >= 1) {
            return parseInt(weekC) + "周前";
        } else if (dayC >= 1) {
            return parseInt(dayC) + "天前";
        } else if (hourC >= 1) {
            return parseInt(hourC) + "小时前";
        } else if (minC >= 1) {
            return parseInt(minC) + "分钟前";
        }
        return '刚刚';
    };

    之前有过一篇也是封装日期的方法:https://www.cnblogs.com/chao202426/p/11577020.html

  • 相关阅读:
    Java学习总结
    John 尼姆博弈
    博弈知识汇总(转)
    坏习纠正
    QDUOJ 河老师的新年礼物(尺取法)
    HDU
    QDUOJ ycb的ACM进阶之路 二进制多重背包
    HDU
    HDU
    POJ
  • 原文地址:https://www.cnblogs.com/chao202426/p/13064358.html
Copyright © 2020-2023  润新知