美文网首页
实际项目中一些简单时间函数的封装:

实际项目中一些简单时间函数的封装:

作者: 尤雨溪的大迷弟 | 来源:发表于2019-12-05 12:00 被阅读0次

    1.计算剩余时间,需求:可用于商品的倒计时等:

            restTime(time){
                var setTime = new Date(time);
                var nowTime = new Date();
                var restSec = setTime.getTime() - nowTime.getTime();
                if(restSec < 0){
                    return false;
                }
                var day = parseInt(restSec / (60*60*24*1000));
                var hour = parseInt(restSec / (60*60*1000) % 24);
                var minu = parseInt(restSec / (60*1000) % 60);
                var sec = parseInt(restSec / 1000 % 60);
                var str = "剩余"+day+"天"+hour+"时"+minu+"分"+sec+"秒";
                return str;
            },
    

    举个栗子:

        let result = this.restTime("2030/11/11 11:11");
        console.log(result); // 剩余3993天19时56分54秒
    

    2.计算传入时间过了多久,需求:可用于记录留言的时间(是什么时候留的)等:

        SmartDate(originDate) {
          originDate = new Date(originDate);
          let nowDate = new Date(),
          isToday = false, // 传入时间是否是当天
          isYesterday = false,
          isPastYear = false,
          isPreviousYear = false,
          originYear,
          originMonth,
          originDay,
          diffMinute, // 传入时间和当前时间相差的分钟数
          formatedDate;
    
          diffMinute = Math.round((nowDate.getTime() - originDate.getTime()) / (1000 * 60));
          originYear = originDate.getFullYear();
          originMonth = originDate.getMonth() + 1;
          originDay = originDate.getDate();
    
          // 相差的分钟数 <= 当前时间的分钟数,即传入时间不是当天
          if (diffMinute <= nowDate.getHours() * 60) {
          isToday = true;
          }
          if (nowDate.getDate() - originDay == 1) {
          isYesterday = true;
          }
          if (nowDate.getFullYear() - originYear == 1) {
          isPreviousYear = true;
          } else if (nowDate.getFullYear() - originYear > 1) {
          isPastYear = true;
          }
          // 以下可以自己定义区间
          if (diffMinute <= 0) { // 一般留言的需求,diffMinute都大于0
          formatedDate = '你在未来';
          }else if (diffMinute < 10 && isToday) { // 当相差的分钟数 < 10且isToday为true
          formatedDate = '刚刚';
          } else if (diffMinute < 60 && isToday) { // 当10 < 相差的分钟数 < 60且isToday为true
          formatedDate = `${diffMinute}分钟前`;
          } else if (diffMinute < 60 * 24 && isToday) { // 当60 < 相差的分钟数 < 60*24且isToday为true
          formatedDate = `${Math.floor(diffMinute / 60)}小时前`;
          } else if (diffMinute < 60 * 24 * 2 && isYesterday) { // 当60*24 < 相差的分钟数 < 60*24*2且isYesterday为true
          formatedDate = '1天前';
          } else if (diffMinute < 60 * 24 * 4) { // 当60*24*2 < 相差的分钟数 < 60*24*4
          formatedDate = '2天前';
          } else if (isPreviousYear) {
          formatedDate = '去年';
          } else if (isPastYear) {
          formatedDate = `${originYear}年`;
          } else {
          formatedDate = `${originMonth}月${originDay}日`;
          }
          return formatedDate;
        }, 
    

    举个栗子:

        let result = this.SmartDate("2019/12/5 15:33");
        console.log(result); // 11分钟前
        result = this.SmartDate("2050/12/5 15:33");
        console.log(result); // 你在未来
        result = this.SmartDate("2019/12/4 15:33");
        console.log(result); // 1天前
    

    相关文章

      网友评论

          本文标题:实际项目中一些简单时间函数的封装:

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