获取当前时间
得到当前时间的 YYYY-MM-DD HH:MI:ss 格式
function nowtime(){
var _this = new Date();
var yy = _this.getFullYear();
var mm = _this.getMonth()+1<10?'0'+(_this.getMonth()+1):(_this.getMonth()+1);
var dd = _this.getDate()<10?'0'+_this.getDate() : _this.getDate();
var hh = _this.getHours() < 10 ? '0' + _this.getHours() : _this.getHours();
var mf = _this.getMinutes() < 10 ? '0' + _this.getMinutes() : _this.getMinutes();
var ss = _this.getSeconds() < 10 ? '0' + _this.getSeconds() : _this.getSeconds();
var nowtime = yy + '-' + mm + '-' + dd + ' ' + hh + ':' + mf + ':' + ss;
return nowtime;
}
计算时间差
相差的天-小时-分钟-秒
传入时间格式YYYY-MM-DD HH:MI:ss 得到两个时间相差的 年-月-天-小时-分钟-秒
传入时间格式YYYY-MM-DD 得到两个时间相差的 年月日
function difftime(){
var new_date = new Date(); //格式化日期,不传默认当前时间
var old_date = new Date('2021-12-09 11:11:11');
var difftime = (new_date - old_date)/1000; //计算时间差,并把毫秒转换成秒
var year = Math.floor(difftime / 86400 / 365);//年
var month = Math.floor(difftime/ 86400 / 30);//月
var days = parseInt(difftime/86400); // 天 24*60*60*1000
var hours = parseInt(difftime/3600)-24*days; // 小时 60*60 总小时数-过去的小时数=现在的小时数
var minutes = parseInt(difftime%3600/60); // 分钟 -(day*24) 以60秒为一整份 取余 剩下秒数 秒数/60 就是分钟数
var seconds = parseInt(difftime%60); // 以60秒为一整份 取余 剩下秒数
var difftimes = year+"年,"+month+"月,"+ days+"天, "+hours+"小时, "+minutes+"分钟, "+seconds+"秒";
return difftimes;
}
相差的分钟
传入的时间格式 HH:mi
得到相差的分钟数
function timeDifference(startTime,endTime){
var start1=startTime.split(":");
var startAll=parseInt(start1[0]*60)+parseInt(start1[1]);
var end1=endTime.split(":");
var endAll=parseInt(end1[0]*60)+parseInt(end1[1]);
return endAll-startAll;
}
console.log(timeDifference("08:30","10:30")); ////120
获取指定日期的前后N天
传入时间格式 date: YYYY-MM-DD ;day:负数为前N天,正数为后N天
得到date的 前后day天
function getNextDate(date, day) {
var dd = new Date(date);
dd.setDate(dd.getDate() + day);
var y = dd.getFullYear();
var m = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1;
var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate();
return y + "-" + m + "-" + d;
};
console.log(getNextDate("2020-01-01", -1)) ////2019-12-31
获取指定日期的前后N个月
传入时间格式 date:YYYY-MM-DD ; monthNum:负数为前N月,正数为后N月
得到date的 前后monthNum月
function GetPreMonthDay(date, monthNum) {
var dateArr = date.split('-');
var year = dateArr[0]; //获取当前日期的年份
var month = dateArr[1]; //获取当前日期的月份
var day = dateArr[2]; //获取当前日期的日
var days = new Date(year, month, 0);
days = days.getDate(); //获取当前日期中月的天数
var year2 = year;
var month2 = parseInt(month) + monthNum;
if (month2 <= 0) {
year2 = parseInt(year2) - parseInt(month2 / 12 == 0 ? 1 : parseInt(month2) / 12);
month2 = 12 - (Math.abs(month2) % 12);
}
if (month2 > 12) {
year2 = parseInt(year2) + parseInt(month2 / 12 == 0 ? 1 : parseInt(month2) / 12);
month2 = parseInt(month2 % 12);
}
var day2 = day;
var days2 = new Date(year2, month2, 0);
days2 = days2.getDate();
if (day2 > days2) {
day2 = days2;
}
if (month2 < 10) {
month2 = '0' + month2;
}
var t2 = year2 + '-' + month2 + '-' + day2;
return t2;
}
console.log(GetPreMonthDay("2020-01-01", -1)) ////2019-12-01
计算指定日期为周几
传入时间格式 YYYY-MM-DD
function getWeek(dateString) {
var dateArray = dateString.split("-");
date = new Date(dateArray[0], parseInt(dateArray[1] - 1), dateArray[2]);
return "周" + "日一二三四五六".charAt(date.getDay());
}
console.log(getWeek('2021-12-09')) ////周四
判断多个时间段是否有重复
将时间段按数组对象传入;这里只判断的是时分秒
s:开始时间 e:结束时间
var dateArr = [
{ s: '01:00:00', e: '14:30:00' },
{ s: '14:20:00', e: '15:05:00' }
]
function judege(idx) {
for (var k in dateArr) {
if (idx !== k) {
if (dateArr[k].s <= dateArr[idx].s && dateArr[k].e > dateArr[idx].s) {
return false
}
if (dateArr[k].s < dateArr[idx].e && dateArr[k].e >= dateArr[idx].e) {
return false
}
}
}
return true
}
function Fn() {
for (var k in dateArr) {
if (!judege(k)) {
return false
}
}
return true
}
console.log(Fn()) //true的话表示没有重叠,false表示有重叠
这里使用了
for...in
循环;for…in 语句用于遍历数组或者对象的属性
var obj={name:'小明',age:12}
for(var k in obj){
console.log(k) ///name age
console.log(obj[k]) ///小明 12
}
var arr=['小明','小花','小林']
for(var k in arr){
console.log(k) ///0 1 2
console.log(arr[k]) ///小明 小花 小林
}
var arrobj=[{name:'小明',age:12},{name:'小花',age:15}]
for(var k in arrobj){
console.log(k) ///0 1
console.log(arrobj[k]) ///{name:'小明',age:12} {name:'小花',age:15}
}
由此可以看出使用
for...in
遍历对象时,k为对象的属性;遍历数组和数组对象时,k为下标
倒计时
传入一个固定的结束时间
function getEndTime(endTime) {
var startDate = new Date(); //开始时间,当前时间
var endDate = new Date(endTime); //结束时间,需传入时间参数
var t = endDate.getTime() - startDate.getTime(); //时间差的毫秒数
var d = 0,
h = 0,
m = 0,
s = 0;
if (t >= 0) {
d = Math.floor(t / 1000 / 3600 / 24);
h = Math.floor(t / 1000 / 60 / 60 % 24);
m = Math.floor(t / 1000 / 60 % 60);
s = Math.floor(t / 1000 % 60);
}
return {d:d,h:h,m:m,s:s};
}
var active = document.getElementById("active");
var timer = setInterval(() => {
var time = getEndTime('2021-12-10 12:00:00')//此处设置你想要结束的时间
var endtime = '距离干饭还有:' + time.d + '天' + time.h + '小时' + time.m + '分钟' + time.s + '秒';
if(time.d == 0 && time.h == 0 && time.m == 0 && time.s == 0){
clearInterval(timer);
active.innerHTML = "干饭!!!";
}
}, 1000);
公历农历互转
将时间格式为YYYY/MM/DD HH:MI:ss格式替换为YYYY-MM-DD HH:MI:ss
var str='2021/11/16 13:17:37' console.log(str.replace(/\//g,'-')) ///2021-11-16 13:17:37
获取指定时间的时间戳
function getTargetTime(t) {
return new Date(t).getTime()
}
时间戳转换为日期
function add0(m) {
return m < 10 ? '0' + m : m
}
function format(shijianchuo) {
//shijianchuo是整数,否则要parseInt转换
var time = new Date(shijianchuo);
var y = time.getFullYear();
var m = time.getMonth() + 1;
var d = time.getDate();
var h = time.getHours();
var mm = time.getMinutes();
var s = time.getSeconds();
return y + '-' + add0(m) + '-' + add0(d) + ' ' + add0(h) + ':' + add0(mm) + ':' + add0(s);
}
I'm so cute. Please give me money.
- 本文链接:https://wangyou.ink/2021/12/11/JS-time/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。