348 lines
12 KiB
JavaScript
348 lines
12 KiB
JavaScript
const gettime = {
|
||
// 计算当前日期星座
|
||
getHoroscope(date) {
|
||
let c = ['摩羯', '水瓶', '双鱼', '白羊', '金牛', '双子', '巨蟹', '狮子', '处女', '天秤', '天蝎', '射手', '摩羯']
|
||
date = new Date(date);
|
||
let month = date.getMonth() + 1;
|
||
let day = date.getDate();
|
||
let startMonth = month - (day - 14 < '865778999988'.charAt(month));
|
||
return c[startMonth] + '座';
|
||
},
|
||
// 计算指定时间与当前的时间差
|
||
sumAge(data) {
|
||
let dateBegin = new Date(data.replace(/-/g, "/"));
|
||
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)
|
||
return dayDiff + "天 " + hours + "小时 ";
|
||
},
|
||
// 获取聊天时间(相差300s内的信息不会显示时间)
|
||
getChatTime(v1, v2) {
|
||
v1 = v1.toString().length < 13 ? v1 * 1000 : v1;
|
||
v2 = v2.toString().length < 13 ? v2 * 1000 : v2;
|
||
if (((parseInt(v1) - parseInt(v2)) / 1000) > 300) {
|
||
return this.gettime(v1);
|
||
}
|
||
},
|
||
// 人性化时间格式
|
||
gettime(shorttime) {
|
||
shorttime = shorttime.toString().length < 13 ? shorttime * 1000 : shorttime;
|
||
let now = (new Date()).getTime();
|
||
let cha = (now - parseInt(shorttime)) / 1000;
|
||
|
||
if (cha < 43200) {
|
||
// 当天
|
||
return this.dateFormat(new Date(shorttime), "{A} {t}:{ii}");
|
||
} else if (cha < 518400) {
|
||
// 隔天 显示日期+时间
|
||
// return this.dateFormat(new Date(shorttime), "{Mon}月{DD}日 {A} {t}:{ii}");
|
||
return this.dateFormat(new Date(shorttime), "{Mon}.{DD} {A} {t}:{ii}");
|
||
} else {
|
||
// 隔年 显示完整日期+时间
|
||
return this.dateFormat(new Date(shorttime), "{Y}.{MM}.{DD} {A} {t}:{ii}");
|
||
}
|
||
},
|
||
|
||
//数字补零
|
||
parseNumber(num) {
|
||
return num < 10 ? "0" + num : num;
|
||
},
|
||
|
||
dateFormat(date, formatStr) {
|
||
let dateObj = {},
|
||
rStr = /\{([^}]+)\}/,
|
||
// mons = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'];
|
||
mons = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
|
||
|
||
dateObj["Y"] = date.getFullYear();
|
||
dateObj["M"] = date.getMonth() + 1;
|
||
dateObj["MM"] = this.parseNumber(dateObj["M"]);
|
||
dateObj["Mon"] = mons[dateObj['M'] - 1];
|
||
dateObj["D"] = date.getDate();
|
||
dateObj["DD"] = this.parseNumber(dateObj["D"]);
|
||
dateObj["h"] = date.getHours();
|
||
dateObj["hh"] = this.parseNumber(dateObj["h"]);
|
||
dateObj["t"] = dateObj["h"] > 12 ? dateObj["h"] - 12 : dateObj["h"];
|
||
dateObj["tt"] = this.parseNumber(dateObj["t"]);
|
||
dateObj["A"] = dateObj["h"] > 12 ? '下午' : '上午';
|
||
dateObj["i"] = date.getMinutes();
|
||
dateObj["ii"] = this.parseNumber(dateObj["i"]);
|
||
dateObj["s"] = date.getSeconds();
|
||
dateObj["ss"] = this.parseNumber(dateObj["s"]);
|
||
|
||
while (rStr.test(formatStr)) {
|
||
formatStr = formatStr.replace(rStr, dateObj[RegExp.$1]);
|
||
}
|
||
return formatStr;
|
||
},
|
||
// 日期转几分钟前、几小时前显示 datetime 格式为2019-11-22 12:23:59样式
|
||
timeago(dateTimeStamp) { //dateTimeStamp是一个时间毫秒,注意时间戳是秒的形式,在这个毫秒的基础上除以1000,就是十位数的时间戳。13位数的都是时间毫秒。
|
||
// var dateTimeStamp = new Date(datetime.replace(/ /, 'T')).getTime() - 8 * 60 * 60 * 1000; //这里要减去中国的时区8小时
|
||
dateTimeStamp = dateTimeStamp.toString().length < 13 ? dateTimeStamp * 1000 : dateTimeStamp;
|
||
var minute = 1000 * 60; //把分,时,天,周,半个月,一个月用毫秒表示
|
||
var hour = minute * 60;
|
||
var day = hour * 24;
|
||
var week = day * 7;
|
||
var halfamonth = day * 15;
|
||
var month = day * 30;
|
||
var now = new Date().getTime(); //获取当前时间毫秒
|
||
var diffValue = now - dateTimeStamp; //时间差
|
||
|
||
if (diffValue < 0) {
|
||
// console.log("diffValue<0", datetime, dateTimeStamp, now, diffValue);
|
||
return '刚刚';
|
||
}
|
||
var minC = diffValue / minute; //计算时间差的分,时,天,周,月
|
||
var hourC = diffValue / hour;
|
||
var dayC = diffValue / day;
|
||
var weekC = diffValue / week;
|
||
var monthC = diffValue / month;
|
||
var result = "2";
|
||
if (monthC >= 1 && monthC <= 3) {
|
||
result = " " + parseInt(monthC) + "月前"
|
||
} else if (weekC >= 1 && weekC <= 3) {
|
||
result = " " + parseInt(weekC) + "周前"
|
||
} else if (dayC >= 1 && dayC <= 6) {
|
||
result = " " + parseInt(dayC) + "天前"
|
||
} else if (hourC >= 1 && hourC <= 23) {
|
||
result = " " + parseInt(hourC) + "小时前"
|
||
} else if (minC >= 1 && minC <= 59) {
|
||
result = " " + parseInt(minC) + "分钟前"
|
||
} else if (diffValue >= 0 && diffValue <= minute) {
|
||
result = "刚刚"
|
||
} else {
|
||
var datetime = new Date();
|
||
datetime.setTime(dateTimeStamp);
|
||
var Nyear = datetime.getFullYear(); {}
|
||
var Nmonth = datetime.getMonth() + 1 < 10 ? "0" + (datetime.getMonth() + 1) : datetime.getMonth() + 1;
|
||
var Ndate = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
|
||
var Nhour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
|
||
var Nminute = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
|
||
var Nsecond = datetime.getSeconds() < 10 ? "0" + datetime.getSeconds() : datetime.getSeconds();
|
||
result = Nyear + "-" + Nmonth + "-" + Ndate
|
||
}
|
||
return result;
|
||
|
||
},
|
||
|
||
/**
|
||
* 根据时间戳 转换时间格式 :
|
||
* @param {Object} time2
|
||
* @param {Object} type
|
||
* type:1 2018-02-02
|
||
* type:2 02月02日 12:30
|
||
* type:3 2018-02-02 12:30:30
|
||
* type:4 2018-02-02 12:30:30
|
||
*/
|
||
format(time2, type) {
|
||
let time = new Date(time2)
|
||
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();
|
||
if (type == 0) {
|
||
console.log(d)
|
||
return this.parseNumber(d);
|
||
} else if (type == 1) {
|
||
return y + '-' + this.parseNumber(m) + '-' + this.parseNumber(d);
|
||
} else if (type == 2) {
|
||
return this.parseNumber(m) + '月' + this.parseNumber(d) + '日' + '\xa0\xa0\xa0' + this.parseNumber(h) + ':' + this.parseNumber(
|
||
mm);
|
||
} else if (type == 3) {
|
||
return this.parseNumber(h) + ':' + this.parseNumber(mm) + ':' + this.parseNumber(s);
|
||
} else if (type == 4) {
|
||
return y + '/' + this.parseNumber(m) + '/' + this.parseNumber(d);
|
||
}else if (type == 5) {
|
||
return this.parseNumber(m) + '-' + this.parseNumber(d) + ' ' + this.parseNumber(h) + ':' + this.parseNumber(
|
||
mm)
|
||
}else if (type == 6) {
|
||
return this.parseNumber(m) + '-' + this.parseNumber(d);
|
||
}else if (type == 7) {
|
||
return this.parseNumber(h) + ':' + this.parseNumber(mm);
|
||
}else {
|
||
return y + '-' + this.parseNumber(m) + '-' + this.parseNumber(d) + ' ' + this.parseNumber(h) + ':' + this.parseNumber(
|
||
mm) + ':' + this.parseNumber(s);
|
||
}
|
||
},
|
||
/* 获取当前时间戳
|
||
*/
|
||
nowTime() {
|
||
let now = new Date().getTime() / 1000
|
||
return Math.floor(now)
|
||
},
|
||
/* 获取当前时间戳之后的时间戳 -- 三分钟
|
||
*/
|
||
nowAfterTime(){
|
||
let now = new Date();
|
||
// let timestamp = Math.floor(now.getTime() / 1000 /60); // 除以1000可得到以秒为单位的时间戳,除以60转换为以分钟为单位的时间戳
|
||
let timestamp = Math.floor(now.getTime() / 1000); // 除以1000可得到以秒为单位的时间戳,除以60转换为以分钟为单位的时间戳
|
||
let threeTime = Number(localStorage.getItem('threeTi'));
|
||
if(threeTime != null){
|
||
let currentTimestamp = Math.floor(new Date().getTime() / 1000);
|
||
if(currentTimestamp - threeTime > 180) {
|
||
localStorage.setItem('threeTi',currentTimestamp)
|
||
// console.log(currentTimestamp,'currentTimestamp');
|
||
return currentTimestamp
|
||
}else{
|
||
// console.log(threeTime,'threeTime');
|
||
return threeTime
|
||
}
|
||
}else{
|
||
localStorage.setItem('threeTi',timestamp)
|
||
return timestamp
|
||
// console.log('首次获取');
|
||
}
|
||
},
|
||
|
||
/**
|
||
* @param {Object} end 截止时间
|
||
* setInterval(() => {
|
||
Countdown(1646063999*1000)
|
||
},1000);
|
||
*/
|
||
Countdown(end) {
|
||
//获取当前时间
|
||
var date = new Date();
|
||
var now = date.getTime();
|
||
|
||
//时间差
|
||
var leftTime = end-now;
|
||
|
||
//定义变量 d,h,m,s保存倒计时的时间
|
||
// var d,h,m,s;
|
||
// if (leftTime>=0) {
|
||
// d = Math.floor(leftTime/1000/60/60/24);
|
||
// h = Math.floor(leftTime/1000/60/60%24);
|
||
// m = Math.floor(leftTime/1000/60%60);
|
||
// s = Math.floor(leftTime/1000%60);
|
||
// }
|
||
let obj
|
||
if (leftTime>=0) {
|
||
obj = {
|
||
'd':Math.floor(leftTime/1000/60/60/24),
|
||
'h':Math.floor(leftTime/1000/60/60%24),
|
||
'm':Math.floor(leftTime/1000/60%60),
|
||
's':Math.floor(leftTime/1000%60),
|
||
}
|
||
}
|
||
return obj?obj : false
|
||
//递归每秒调用countTime方法,显示动态时间效果
|
||
//setTimeout(countTime,1000);
|
||
|
||
} ,
|
||
|
||
/**
|
||
* @param {Object} Number
|
||
* 秒转为 00:00:00
|
||
*/
|
||
s_format_hms(Number) {
|
||
let s = parseInt(Number)
|
||
let m = s / 60;
|
||
let h = m / 60;
|
||
return this.parseNumber(Math.floor(h)) + ':' + this.parseNumber(Math.floor(m)) + ':' + this.parseNumber(Math.floor(s))
|
||
},
|
||
|
||
/**
|
||
* 倒计时输出
|
||
*
|
||
*/
|
||
getRestTime(time){
|
||
var setTime = time;
|
||
var nowTime = new Date();
|
||
var restSec = setTime - nowTime.getTime();
|
||
var day = parseInt(restSec / (60*60*24*1000));
|
||
var hour = parseInt(restSec / (60*60*1000) % 24);
|
||
var min = parseInt(restSec / (60*1000) % 60);
|
||
var sec = parseInt(restSec / 1000 % 60);
|
||
let obj = {
|
||
'd':this.parseNumber(day),
|
||
'h':this.parseNumber(hour),
|
||
'm':this.parseNumber(min),
|
||
's':this.parseNumber(sec),
|
||
}
|
||
return obj
|
||
// return `剩余${day}天${hour}时${min}分${sec}秒`
|
||
},
|
||
//毫秒转 日时分秒
|
||
TimeFramtHms(time){
|
||
var day = parseInt(time / (60*60*24*1000));
|
||
var hour = parseInt(time / (60*60*1000) % 24);
|
||
var min = parseInt(time / (60*1000) % 60);
|
||
var sec = parseInt(time / 1000 % 60);
|
||
let obj = {
|
||
'd':this.parseNumber(day),
|
||
'h':this.parseNumber(hour),
|
||
'm':this.parseNumber(min),
|
||
's':this.parseNumber(sec),
|
||
}
|
||
return obj
|
||
// return `剩余${day}天${hour}时${min}分${sec}秒`
|
||
},
|
||
//moap
|
||
secTotime(s) {
|
||
var t = '';
|
||
if(s > -1){
|
||
var hour = Math.floor(s/3600)
|
||
var min = Math.floor(s/60) % 60
|
||
var sec = s % 60
|
||
if(hour < 10) {
|
||
t = '0'+ hour + ":"
|
||
} else {
|
||
t = hour + ":"
|
||
}
|
||
if(min < 10){
|
||
t += "0"
|
||
}
|
||
t += min + ":"
|
||
if(sec < 10){
|
||
t += "0"
|
||
}
|
||
t += sec.toFixed(2)
|
||
}
|
||
return t
|
||
},
|
||
// 视频长度格式化 1356 转 00:00:00
|
||
changetime(value) {
|
||
var secondTime = parseInt(value);// 秒
|
||
var minuteTime = 0;// 分
|
||
var hourTime = 0;// 小时
|
||
if(secondTime > 60) {//如果秒数大于60,将秒数转换成整数
|
||
//获取分钟,除以60取整数,得到整数分钟
|
||
minuteTime = parseInt(secondTime / 60);
|
||
//获取秒数,秒数取佘,得到整数秒数
|
||
secondTime = parseInt(secondTime % 60);
|
||
//如果分钟大于60,将分钟转换成小时
|
||
if(minuteTime > 60) {
|
||
//获取小时,获取分钟除以60,得到整数小时
|
||
hourTime = parseInt(minuteTime / 60);
|
||
//获取小时后取佘的分,获取分钟除以60取佘的分
|
||
minuteTime = parseInt(minuteTime % 60);
|
||
}
|
||
}
|
||
var time = "" + parseInt(secondTime) + "";
|
||
|
||
if(minuteTime > 0) {
|
||
time = "" + parseInt(minuteTime) + ":" + time;
|
||
}
|
||
if(hourTime > 0) {
|
||
time = "" + parseInt(hourTime) + ":" + time;
|
||
}
|
||
return time;
|
||
}
|
||
}
|
||
|
||
|
||
export default gettime;
|
||
|
||
|