美文网首页
一个把 日期对象 转化成 ...之前 形式的函数

一个把 日期对象 转化成 ...之前 形式的函数

作者: DengXG | 来源:发表于2016-11-25 14:52 被阅读11次

    自己编写的,有不当之处欢迎指出.


    /**
     * getAgoFromDate.js
     * 把 日期对象 转化成 ...之前 的形式
     * @param  {日期对象} 需要计算的日期对象.
     * @return {字符串} 返回多久之前.
     * 返回格式如:刚刚、1分钟以前、1小时以前、1天以前、1月以前、1年以前
     */
    function getAgoFromDate(d) {
        var iNow = +new Date,
            iThat = +d,
            iDiff =  iNow - iThat,
            iMin = 60 * 1000,
            iHour = 60 * iMin,
            iDay = 24 * iHour,
            iMonth = 30 * iDay,
            iYear = 365 * iDay;
        // 一分钟内
        if (iDiff < iMin) {
            return "刚刚";
        }
        // 一小时内按分钟算
        if (iDiff < iHour) {
            return [
                Math.floor(iDiff / iMin),
                "分钟之前"
            ].join("");
        }
        // 一天内按小时算
        if (iDiff < iDay) {
            return [
                Math.floor(iDiff / iHour),
                "小时之前"
            ].join("");
        }
        // 一月之内按天
        if (iDiff < iMonth) {
            return [
                Math.floor(iDiff / iDay),
                "天之前"
            ].join("");
        }
        // 一年之内按月
        if (iDiff < iYear) {
            return [
                Math.floor(iDiff / iMonth),
                "月之前"
            ].join("");
        }
        //1年以前
        else {
          return [
              Math.floor(iDiff / iYear),
              "年之前"
          ].join("");
        }
    }
    
    // node的模块写法
    module.exports = getAgoFromDate;
    
    

    附单元测试代码

    /**
     * getAgoFromDate.test.js
     * Mocha nodejs测试框架
     */
    var dateToString = require('./getAgoFromDate.js'),
        expect = require('chai').expect,
        iMin = 1000 * 60,
        iHour = iMin * 60,
        iDay = iHour * 24,
        iMonth = iDay * 30,
        iYear = iDay * 365;
    describe('指定的 日期对象 转 中文 多久之前 字符串 的测试: ', function() {
        it('刚刚 的测试', function() {
            expect(dateToString(new Date(new Date - iMin / 2))).to.be.equal('刚刚');
        });
        it('2分钟 的测试', function() {
            expect(dateToString(new Date(new Date - iMin * 2))).to.be.equal('2分钟之前');
        });
        it('2小时 的测试', function() {
            expect(dateToString(new Date(new Date - iHour * 2))).to.be.equal('2小时之前');
        });
        it('2天 的测试', function() {
            expect(dateToString(new Date(new Date - iDay * 2))).to.be.equal('2天之前');
        });
        it('2月 的测试', function() {
            expect(dateToString(new Date(new Date - iMonth * 2))).to.be.equal('2月之前');
        });
        it('2年 的测试', function() {
            expect(dateToString(new Date(new Date - iYear * 2))).to.be.equal('2年之前');
        });
    })
    
    

    相关文章

      网友评论

          本文标题:一个把 日期对象 转化成 ...之前 形式的函数

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