Files
SEONexus/code/public/template/shikong/huiyuan/js/public/time.js
2025-04-21 17:49:17 +08:00

348 lines
12 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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;