JS计算时间差

更新日期: 2019-09-08阅读: 5.7k标签: 时间

getTime()方法

方法定义: getTime() 方法可返回距 1970 年 1 月 1 日之间的毫秒数。

通常我们计算时间差都是通过获取两个时间数据,然后分别使用getTime()方法返回与固定的1970 年 1 月 1 日的时间差,通过对返回毫秒数的差,换算成时间单位,得出两个时间的时间差。


开始操作:

首先你会有一串初始的时间数据,然后通过 new Date(你的时间数据),将你的数据转成Date对象的形式。

var t1="2017/08/28 04:56:38"; //数据
var dateBegin = new Date(t1);//转化为Date对象的形式
//Mon Aug 28 2017 04:56:38 GMT+0800 (中国标准时间) 这里就是Date对象的数据形式


时间格式

这里的话就要注意一下后端给的时间数据格式的问题,比如下面两种:

  • 第一种:"2017/08/28 04:56:38"//这种格式不用再进行处理
  • 第二种:"2017-08-01 18:56:38"//这种格式就要进行处理 

因为new Date()方法不能处理第二种数据,所以我们这里需要将第二种数据格式转化为第一种数据的格式。

let t1="2017-05-12 00:13:53";
let dateBegin = new Date(d1.replace(/-/g, "/"));//replace方法将-转为/

另一个时间数据:
既然是时间差的话,就肯定要有两个数据,不然怎么两相比较,一般两个数据中都会有一个当前时间的数据。

let dateEnd = new Date();//当前时间数据


完整计算时间差(天、小时、分钟、秒)的代码

先获取之间的毫秒差,通过毫秒差换算出你所需要的时间单位,然后时间单位之间的换算根据的是他们的倍数关系。

function timeFn(d1) {//di作为一个变量传进来
//如果时间格式是正确的,那下面这一步转化时间格式就可以不用了
let dateBegin = new Date(d1.replace(/-/g, "/"));//将-转化为/,使用new Date
let dateEnd = new Date();//获取当前时间
let dateDiff = dateEnd.getTime() - dateBegin.getTime();//时间差的毫秒数
let dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000));//计算出相差天数
let leave1=dateDiff%(24*3600*1000) //计算天数后剩余的毫秒数
let hours=Math.floor(leave1/(3600*1000))//计算出小时数
//计算相差分钟数
let leave2=leave1%(3600*1000) //计算小时数后剩余的毫秒数
let minutes=Math.floor(leave2/(60*1000))//计算相差分钟数
//计算相差秒数
let leave3=leave2%(60*1000) //计算分钟数后剩余的毫秒数
let seconds=Math.round(leave3/1000)
console.log(" 相差 "+dayDiff+"天 "+hours+"小时 "+minutes+" 分钟"+seconds+" 秒")
console.log(dateDiff+"时间差的毫秒数",dayDiff+"计算出相差天数",leave1+"计算天数后剩余的毫秒数"
,hours+"计算出小时数",minutes+"计算相差分钟数",seconds+"计算相差秒数");
}
let t3="2017-08-18 04:56:38";
timeFn(t3);


不成熟的计算月、年:

//这里的dayDiff就是上文计算出的天数差
let monthDiff=Math.floor(dayDiff/30);//以30天为一个月不够精准严谨
//获取相差的月份
if (monthDiff<12){
timeThis=monthDiff+"个月前发布";//获取相差的月份
return
}
let yearDiff=Math.floor(monthDiff/12);//获取相差的年份
if(yearDiff>=1){
timeThis=yearDiff+"年前发布";
return
}

当天数相差较大的时候,单纯计算天数已经不能满足需求了,因为我们PM说的统一以30天为一个月的分界线,然后这里月份的计算情况感觉很复杂的样子没有继续研究下去。

获取当前月份的天数
function getDays() {
//构造当前日期对象
var date = new Date();
var year = date.getFullYear();//获取年份
var mouth = date.getMonth() + 1;//获取当前月份
var days;//定义当月的天数;
if (mouth == 2) {//当月份为二月时,根据闰年还是非闰年判断天数
days = year % 4 == 0 ? 29 : 28;
}
else if (mouth == 1 || mouth == 3 || mouth == 5 || mouth == 7 || mouth == 8 || mouth == 10 || mouth == 12) {
//月份为:1,3,5,7,8,10,12 时,为大月.则天数为31;
days = 31;
}
else {
//其他月份,天数为:30.
days = 30;
}
return days;
}


链接: https://fly63.com/article/detial/5269

js对时间的操作

获取当前时间 以2019-06-23 20:30:00 的形式显示(time即为当前时间) ;将数据库中的datetime格式转化为2019-06-23 20:30:00 形式

原生JS实现日历

这周写自己的项目发现又用到日历了,加之自己毕业之后的第一个工作中遇到的任务也是需要写个日历(组员写了,我就不用写了),今天就来好好折腾一下日历是怎么写的

js 不同时间格式介绍以及相互间的转换

首先必须要提到的是 Date 对象,它用来处理时间和日期。使用 new Date() 语句可创建 Date 对象,创建出来的时间格式如下(后面提到的标准时间都是指该格式):

11个顶级 JavaScript 日历插件

日历是我们生活中重要的一部分。在当今世界,人们大多使用网络或移动日历。它们随处可见,包括在各种软件中:预订应用、旅行软件、项目管理、管理面板等。出于多种原因,用户可能需要在网站上使用日历

js获取任意一天的0点和23:59:59时间

最近写代码时,需要获取任意一天的起始和结束时间,0点和23:59:59这两个时间的时间戳;使用了setHours() 方法;setHours() 方法用于设置指定的时间的小时字段

Js实时显示系统时间

在页面找一个合适的位置添加div标签,用于显示时间;自定义JavaScript函数 showTime();在页面载入事件中每隔一秒调用一次showTime()函数,实时显示系统时间

Js时间对象Date

写在前面:时间是物理学七大常量之一。生活中记录时间有两种方式(或者说有两种计时系统):GMT(格林尼治时间)和UTC(协调世界时间)。JS中的Date对象只能通过new关键字创建。 

Js实现倒计时

利用JS中的Date对象即可实现,创建目标时间和当前时间,利用getTime函数将两个时间转换成距离1970-01-01的秒数,相减后转化为年月日即可

一行js代码实现时间戳转时间格式

javascript时间戳转换,支持自定义格式,可以显示年,月,周,日,时,分,秒多种形式的日期和时间。推荐一个JavaScript常用函数库;在日常工作生活中,会经常用到一些日期格式化,url相关操作,浏览器类型判断,常用验证格式等等函数

js 判断当前时间是否在某一时间段

我们可以使用 jutils - JavaScript常用函数库的 isDuringDate 函数来实现,传入 beginDateStr (开始时间), endDateStr(结束时间), 当前时间是否在2018/09/17 - 2030/09/17 之间,输出 true

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!