JavaScript 时间相关处理方法

5 篇文章 0 订阅
3 篇文章 0 订阅

1.获取当前日期

//获取当前日期的字符串表达
function getCurrentDateString(){
    var date = new Date();
    const year = date.getFullYear()     //年
    const month = date.getMonth() + 1   //月
    const day = date.getDate()          //日

    function formatNumber(n){
        //数字转成数字字符串
        n = n.toString()
        return n[1]?n:'0'+n
    }
    return [year, month, day].map(formatNumber).join('-') //2018-04-20
}       

2.获取当前时间

//获取当前时间的字符串表达
function getCurrentTimeString(){
    var date = new Date();
    const year = date.getFullYear()     //年
    const month = date.getMonth() + 1   //月
    const day = date.getDate()          //日

    const hour = date.getHours()        //时
    const minute = date.getMinutes()    //分
    const second = date.getSeconds()    //秒

    function formatNumber(n){
        //数字转成数字字符串
        n = n.toString()
        return n[1]?n:'0'+n
    }
    return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')  //2018/04/20 16:00:00
}       

3.阿拉伯数字转汉语数字(2 => 二)

var chnNumChar = ["零","一","二","三","四","五","六","七","八","九"];
var chnUnitSection = ["","万","亿","万亿","亿亿"];
var chnUnitChar = ["","十","百","千"];

function SectionToChinese(section){
    var strIns = '', chnStr = '';
    var unitPos = 0;
    var zero = true;
    while(section > 0){
        var v = section % 10;
        if(v === 0){
            if(!zero){
                zero = true;
                chnStr = chnNumChar[v] + chnStr;
            }
        }else{
            zero = false;
            strIns = chnNumChar[v];
            strIns += chnUnitChar[unitPos];
            chnStr = strIns + chnStr;
        }
        unitPos++;
        section = Math.floor(section / 10);
    }
    return chnStr;
}
// 数字转汉语数字
function NumberToChinese(num){
    var unitPos = 0;
    var strIns = '', chnStr = '';
    var needZero = false;

    if(num === 0){
        return chnNumChar[0];
    }

    while(num > 0){
        var section = num % 10000;
        if(needZero){
            chnStr = chnNumChar[0] + chnStr;
        }
        strIns = SectionToChinese(section);
        strIns += (section !== 0) ? chnUnitSection[unitPos] : chnUnitSection[0];
        chnStr = strIns + chnStr;
        needZero = (section < 1000) && (section > 0);
        num = Math.floor(num / 10000);
        unitPos++;
    }

    // 将一十一这种变成十一
    if (chnStr.indexOf("一十") != -1) {
        chnStr = "十"+chnStr.split("一十")[1];
    }

    return chnStr;
}

4.判断已知日期是星期几

//判断已知日期字符串是星期几, 假设 dateString:2018-04-20
function getWeekDay(dateString){
    var currentDate = new Date();  //获取当前日期
    var date = new Date(dateStr);  //日期字符串转日期
    if (date.getDay() === 0) {
        var weekDay = "周日"
    }else{
        var weekDay = "周" +NumberToChinese(date.getDay());
    }
    return weekDay;
}       

5.获取已知日期前/后n天的日期

  • 后 n 天

    // dateStr:2018-04-20 num:1
    function getLaterDate(dateStr, num){
        // 获取date1后n天的日期
        var date1 = new Date(dateStr);
        var date2 = new Date(date1);
        date2.setDate(date1.getDate() + num);
    
        return [date1, date2]
    }
  • 前 n 天

    // dateStr:2018-04-20 num:1
    function getBeforeDate(dateStr, num){
        // 获取date1前n天的日期
        var date1 = new Date(dateStr);
        var date2 = new Date(date1);
        date2.setDate(date1.getDate() - num);
    
        return [date1, date2]
    }

6.获取已知时间前/后n分钟的时间

  • 后 n 分钟

    // timeString:2018/04/20 10:00 num:40
    function getLaterTime(timeString, num){
        // 获取timeString后n分钟的时间
        var time1 = new Date(timeString);
        var time2 = new Date(time1);
        time2.setMinutes(time1.getMinutes() + num);
    
        return [time1, time2]
    }
  • 前 n 分钟

    // timeString:2018/04/20 10:00 num:40
    function getBeforeTime(timeString, num){
        // 获取timeString前n分钟的时间
        var time1 = new Date(timeString);
        var time2 = new Date(time1);
        time2.setMinutes(time1.getMinutes() - num);
    
        return [time1, time2]
    }

7.获取30天的日期

function get30Dates(dateStr, hasToday){
        var bd = Utils.getLaterDate(dateStr, 29)[0];
        var be = Utils.getLaterDate(dateStr, 29)[1];

        var bd_time = bd.getTime(), 
            be_time = be.getTime(),
            time_diff = be_time - bd_time;  
        var d_arr = [];  
        for(var i=0; i<= time_diff; i+=86400000){  
            var ds = new Date(bd_time+i);  
            if (ds.getDay() === 0) {
                var weekDay = "周日"
            }else{
                var weekDay = "周"+NumberToChinese(ds.getDay());
            }
            d_arr.push(ds)  
        } 

        return d_arr
    }

8.仿微博显示时间问题

//timeString:2018-04-20T10:25:38
function dealWithTime(timeString){
        var timeArray = timeString.split('.')[0].split('T')
        var year = timeArray[0].split('-')[0];
        var month = timeArray[0].split('-')[1];
        var day = timeArray[0].split('-')[2];

        var hour = timeArray[1].split(':')[0];
        var minute = timeArray[1].split(':')[1];
        var second = timeArray[1].split(':')[2];

        var create = new Date(year, month - 1, day, hour, minute, second);
        var current = new Date();
        var s1 = current.getTime() - create.getTime(); //相差的毫秒
        var str = null;
        if (s1 / (60 * 1000) < 1) {
          str = "刚刚";
        } else if (s1 / (60 * 1000) < 60) {
          str = parseInt(s1 / (60 * 1000)) + "分钟前";
        } else if (s1 / (60 * 1000) < 24 * 60) {
          str = parseInt(s1 / (60 * 60 * 1000)) + "小时前";
        } else if (s1 / (60 * 1000) < 24 * 60 * 2) {
          str = "昨天 " + timeString.slice(11, 16);
        } else {
          str = timeString.slice(0, 10).replace('T', ' ');
        }
        return str;
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值