yyyy年mm月dd日
if (!String.prototype.padStart) {
String.prototype.padStart = function(maxLength, fillString = ' ') {
if (Object.prototype.toString.call(fillString) !== "[object String]") throw new TypeError(
'fillString must be String')
let str = this
if (str.length >= maxLength) return String(str)
let fillLength = maxLength - str.length,
times = Math.ceil(fillLength / fillString.length)
while (times >>= 1) {
fillString += fillString
if (times === 1) {
fillString += fillString
}
}
return fillString.slice(0, fillLength) + str;
}
}
function timeFormat(dateTime = null, fmt = 'yyyy-mm-dd') {
if (!dateTime) dateTime = Number(new Date());
if (dateTime.toString().length == 10) dateTime *= 1000;
let date = new Date(dateTime);
let ret;
let opt = {
"y+": date.getFullYear().toString(),
"m+": (date.getMonth() + 1).toString(),
"d+": date.getDate().toString(),
"h+": date.getHours().toString(),
"M+": date.getMinutes().toString(),
"s+": date.getSeconds().toString()
};
for (let k in opt) {
ret = new RegExp("(" + k + ")").exec(fmt);
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
};
};
return fmt;
}
export default timeFormat
时间戳转为多久之前
/**
* 时间戳转为多久之前
* @param String timestamp 时间戳
* @param String | Boolean format 如果为时间格式字符串,超出一定时间范围,返回固定的时间格式;
* 如果为布尔值false,无论什么时间,都返回多久以前的格式
*/
function timeFrom(dateTime = null, format = 'yyyy-mm-dd') {
// 如果为null,则格式化当前时间
if (!dateTime) dateTime = Number(new Date())
// 如果dateTime长度为10或者13,则为秒和毫秒的时间戳,如果超过13位,则为其他的时间格式
if (dateTime.toString().length == 10) dateTime *= 1000
let timestamp = + new Date(Number(dateTime))
let timer = (Number(new Date()) - timestamp) / 1000
// 如果小于5分钟,则返回"刚刚",其他以此类推
let tips = ''
switch (true) {
case timer < 300:
tips = '刚刚'
break
case timer >= 300 && timer < 3600:
tips = parseInt(timer / 60) + '分钟前'
break
case timer >= 3600 && timer < 86400:
tips = parseInt(timer / 3600) + '小时前'
break
case timer >= 86400 && timer < 2592000:
tips = parseInt(timer / 86400) + '天前'
break
default:
// 如果format为false,则无论什么时间戳,都显示xx之前
if(format === false) {
if(timer >= 2592000 && timer < 365 * 86400) {
tips = parseInt(timer / (86400 * 30)) + '个月前'
} else {
tips = parseInt(timer / (86400 * 365)) + '年前'
}
} else {
tips = timeFormat(timestamp, format)
}
}
return tips
}
export default timeFrom
年月日时分秒
function formatTime(){
let date = new Date()
// 年
const year = date.getFullYear()
// 月
const month = date.getMonth() + 1
// 日
const day = date.getDate()
// 时
const hour = date.getHours()
// 分
const minute = date.getMinutes()
// 秒
const second = date.getSeconds()
return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}`
}
// 补零
function formatNumber(n) {
n = n.toString()
return n[1] ? n : `0${n}`
}
时间戳转换为想要的时间格式
Date.prototype.format = function (fmt = 'yyyy-MM-dd hh:mm:ss') {
var o = {
"M+": this.getMonth() + 1,
"d+": this.getDate(),
"h+": this.getHours(),
"m+": this.getMinutes(),
"s+": this.getSeconds(),
"q+": Math.floor((this.getMonth() + 3) / 3),
"S": this.getMilliseconds()
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[
k]).substr(("" + o[k]).length)));
return fmt;
}
刚刚 || 3分钟前 || 1小时前
// time1 1593790157203 TO>>> 刚刚 || 3分钟前 || 1小时前 || 1天前 || 1周前 || 2月前 || 2019年11月11日
const time1 = (timer) => {
var arrTimestamp = (timer + '').split('')
for (var start = 0
if (!arrTimestamp[start]) {
arrTimestamp[start] = '0'
}
}
timer = arrTimestamp.join('') * 1
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 - timer
// 如果本地时间反而小于变量时间
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
// 数值补0方法
var zero = function(value) {
if (value < 10) {
return '0' + value
}
return value
}
// 使用
if (monthC > 12) {
// 超过1年,直接显示年月日
return (function() {
var date = new Date(timer)
return date.getFullYear() + '年' + zero(date.getMonth() + 1) + '月' + zero(date.getDate()) + '日'
})()
} else if (monthC >= 1) {
return parseInt(monthC) + "月前"
} else if (weekC >= 1) {
return parseInt(weekC) + "周前"
} else if (dayC >= 1) {
return parseInt(dayC) + "天前"
} else if (hourC >= 1) {
return parseInt(hourC) + "小时前"
} else if (minC >= 1) {
return parseInt(minC) + "分钟前"
}
return '刚刚'
}
上午12:01 || 昨天 || 星期日
const time2 = (timer) => {
var arrTimestamp = (timer + '').split('');
for (var start = 0; start < 13; start++) {
if (!arrTimestamp[start]) {
arrTimestamp[start] = '0';
}
}
var Etime = arrTimestamp.join('') * 1;
var Etimer = new Date(Etime)
var Ntime = new Date().getTime()
var Ntimer = new Date()
var Eyear = Etimer.getFullYear();
var Emonth = Etimer.getMonth() + 1 < 10 ? '0' + (Etimer.getMonth() + 1) : Etimer.getMonth() + 1;
var Edate = Etimer.getDate()< 10 ? '0' + Etimer.getDate() : Etimer.getDate();
var Eweek = Etimer.getDay()
var Ehour = Etimer.getHours() < 10 ? '0' + Etimer.getHours() : Etimer.getHours();
var Eminute = Etimer.getMinutes() < 10 ? '0' + Etimer.getMinutes() : Etimer.getMinutes();
var today = new Date(new Date().setHours(0, 0, 0, 0)) / 1000 * 1000
var yesterday = today - 24 * 60 * 60 * 1000
var beforeWeek = today - 7 * 24 * 60 * 60 * 1000
if (today < Etime) {
if (Ehour < 12) {
return '上午' + Ehour + ':' + Eminute
} else {
return '下午' + Ehour + ':' + Eminute
}
}
if (yesterday < Etime && Etime < today) {
return '昨天'
}
if (beforeWeek < Etime) {
if (Eweek == 0) {
return "星期日"
} else if (Eweek == 1) {
return "星期一"
} else if (Eweek == 2) {
return "星期二"
} else if (Eweek == 3) {
return "星期三"
} else if (Eweek == 4) {
return "星期四"
} else if (Eweek == 5) {
return "星期五"
} else if (Eweek == 6) {
return "星期六"
}
}
return Eyear + '-' + Emonth + '-' + Edate
}
日期转为时间戳
const time4 = (timer) => {
var date = timer.replace(/\//g, '-')
date = timer.replace(/:/g, ':')
var Etimer = new Date(date)
var Etime = Etimer.getTime()
return Etime
}
开始与结束时间戳
// time5 (1593790157203,1593790157205) (开始与结束时间戳) TO>>> 00:40 || 01:25 || 01:20:11 (时长)
const time5 = (sTime,eTime) => {
if(sTime.length==13) sTime = (sTime-0)/1000
if(eTime.length==13) eTime = (eTime-0)/1000
var lang = 0
var interval = Math.ceil((eTime-sTime)/1000)
// 一分钟以内
if(interval<60){
if(interval<10){
lang = '0' + interval
}else{
lang = interval
}
return '00:'+lang
}
// 一小时以内
if(60 < interval && interval < 3600){
var langM = Math.floor(interval/60)
var langS = Math.floor(interval-(langM*60))
if(langM<10) langM = '0'+langM
if(langS<10) langS = '0'+langS
return langM+':'+langS
}
// 一小时以上
if(3600 < interval){
var langH = Math.floor(interval/3600)
var langM = Math.floor((interval/60)-(langH*60))
var langS = Math.floor(interval-(langH*3600)-(langM*60))
if(langH<10) langH = '0'+langH
if(langM<10) langM = '0'+langM
if(langS<10) langS = '0'+langS
return langH+':'+langM+':'+langS
}
}