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

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

作者: 尤雨溪的大迷弟 | 来源:发表于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天前

相关文章

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

    1.计算剩余时间,需求:可用于商品的倒计时等: 举个栗子: 2.计算传入时间过了多久,需求:可用于记录留言的时间(...

  • RocketMQ简单封装

    common-rocketmq介绍 该项目对rocketmq在实际项目开发中做了简单的封装,使用简单,common...

  • BEM规范函数封装

    在实际项目开发中,为了统一样式书写规范,通常是遵循BEM规范,结合Less/Sass使用,可以封装成函数: 封装 使用

  • UIPickerView的简单封装

    UIPickerView的简单封装在iOS实际项目中,经常会出现界面中多个地方需要使用UIPickerView,如...

  • python函数的简单封装

    函数的简单封装 实现对文件读写操作的封装 file_function.py(实现函数的封装) (进行函数调用)

  • day07 函数Ⅰ 2018-07-24

    一、函数的声明   函数: 就是对实现某一些功能的代码块的封装 &emsp作用: 封装(将功能绑定在一个函数中,想...

  • 我们一起学python(函数)

    如果了解了python代码的简单流程控,那么我们就要开始做一些简单的封装了. 函数 我们先来封装一个打印字典对象的...

  • 【面向对象】泛型广泛应用封装

    实际工作中,我们经常对接口调用进行封装,利用泛型返回结果值。 1. 封装函数,统一的返回结果值 所有的调用接口封装...

  • 错误解决方案和模块化 CommonJS、AMD、CMD

    一、错误处理方案 开发中我们会封装一些工具函数,封装之后给别人使用在其他人使用的过程中,可能会传递一些参数对于函数...

  • utils封装汇总(待增加)

    vue项目中经常会自己封装一些函数,在项目中方便多处调用.这里给出一部分我自己封装以及收集的仅供参考.

网友评论

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

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