时间计算

JavaScript Date(日期)对象:

1、Date() ------获得当日的日期
2、getTime() ------返回从 1970 年 1 月 1 日至今的毫秒数。

1、获取当前时间
var myDate = new Date() ------获取系统当前时间
复制代码
2、获取特定格式的时间
myDate.getYear() ------获取当前年份(2位)
myDate.getFullYear() ------获取完整的年份(4位,1970-????)
myDate.getMonth() ------获取当前月份(0-11,0代表1月)
myDate.getDate() ------获取当前日(1-31)
myDate.getDay() ------获取当前星期X(0-6,0代表星期天)
myDate.getTime() ------获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours() ------获取当前小时数(0-23)
myDate.getMinutes() ------获取当前分钟数(0-59)
myDate.getSeconds() ------获取当前秒数(0-59)
myDate.getMilliseconds() ------获取当前毫秒数(0-999)
myDate.toLocaleDateString() ------获取当前日期
myDate.toLocaleTimeString() ------获取当前时间
myDate.toLocaleString() ------获取日期与时间
复制代码
3、js 获取当前时间毫秒:

第一种方法:

 var timestamp =Date.parse(new Date());
复制代码

得到的结果:1280977330000 ,注意:这里得到的结果将后三位(毫秒)转换成了000显示,使用时可能会出现问题。例如动态添加页面元素id的时候,不建议使用。

第二种方法:

var timestamp =(new Date()).valueOf();
复制代码

结果:1280977330748

第三种方法:

var timestamp=new Date().getTime();
复制代码

结果:1280977330748

js中单独调用new Date(),例如document.write(new Date());
显示的结果是:Mar 31 10:10:43 UTC+0800 2012 这种格式的时间
但是用new Date() 参与计算会自动转换为从1970.1.1开始的毫秒数。

组件1:发布时间到当前时间的时间差(页面刷新:几分钟前)

方法1(基本原理):

   /*****发布时间到当前时间的时间差(页面刷新:几分钟前)******/
    getDateDiff : function(dateTimeStam){
        var timeResult;//需要返回的值
        var dateTimeStamp=dateTimeStam.getTime();//传入日期秒数化
        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 - dateTimeStamp;
        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;
        if(monthC>=1){
            timeResult="" + parseInt(monthC) + "个月前";
        }
        else if(weekC>=1){
            timeResult="" + parseInt(weekC) + "周前";
        }
        else if(dayC>=1){
            timeResult=""+ parseInt(dayC) +"天前";
        }
        else if(hourC>=1){
            timeResult=""+ parseInt(hourC) +"小时前";
        }
        else if(minC>=1){
            timeResult=""+ parseInt(minC) +"分钟前";
        }else{
            timeResult="刚刚";
        }
        return timeResult;
    }
复制代码

方法2(写在vue项目的公用组件中):

String.prototype.parseTime = function(currentDate){ 
//String.prototype用于为某字符串对象新增方法
    var now = currentDate ? currentDate.getTime() : new Date().getTime(),//获取当前时间的秒数
      target = new Date(Date.parse(this.replace(/\-/g,"/").replace(/\.0/g,""))).getTime(),//获取传入时间的秒数
      //
      diffValue = now - target,
      result='',
      minute = 1000 * 60,
      hour = minute * 60,
      day = hour * 24,
      halfamonth = day * 15,
      month = day * 30,
      year = month * 12,
      _year = diffValue/year,
      _month =diffValue/month,
      _day =diffValue/day,
      _hour =diffValue/hour,
      _min =diffValue/minute,
      _min_target = _min%60 > 0 ? _min%60 : 0 ;

    if(_day>=1) {
      result=parseInt(_day) +"天前";
    } else if(_hour>=1) {
      result=parseInt(_hour) +"小时前";
    }else if(_min>=1) {
      result=parseInt(_min_target) +"分钟前";
    }else {
      result = '刚刚';
    }
    return result;
  };
复制代码

转载于:https://juejin.im/post/5b42db07f265da0f8524d08f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值