function formatDate(time, format) {
if (!time) {
return "";
}
if (isNaN(parseInt(time)) && !(time instanceof Date)) {
return time;
}
let date = new Date(time);
let o = {
"M+": date.getMonth() + 1,
"d+": date.getDate(),
"h+": date.getHours() % 12 == 0 ? 12 : date.getHours() % 12,
"H+": date.getHours(),
"m+": date.getMinutes(),
"s+": date.getSeconds(),
"q+": Math.floor((date.getMonth() + 3) / 3),
"S": date.getMilliseconds()
};
let week = {
"0": "日",
"1": "一",
"2": "二",
"3": "三",
"4": "四",
"5": "五",
"6": "六"
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
}
if (/(E+)/.test(format)) {
format = format.replace(RegExp.$1, ((RegExp.$1.length > 1) ? "周" : "") + week[date.getDay() + ""]);
}
for (let k in o) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
}
}
return format;
}
function timeago(time) {
var minute = 1000 * 60;
var hour = minute * 60;
var day = hour * 24;
var week = day * 7;
var month = day * 30;
var now = new Date().getTime();
var dateTimeStamp = time instanceof Date ? time.getTime() : time;
var diffValue = now - dateTimeStamp;
if (diffValue < 0) {
return '';
}
var minC = diffValue / minute;
var hourC = diffValue / hour;
var dayC = diffValue / day;
var weekC = diffValue / week;
var monthC = diffValue / month;
var result;
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();
result = Nyear + "-" + Nmonth + "-" + Ndate
}
return result;
}
function parseDateISO(str) {
str = str.replace(/T/g, '-').replace(/:/g, '-').replace(/\./g, '-').replace(/ /g, '-');
var array = str.split('-');
str = array[0] + "/" + array[1] + "/" + array[2] + " " + array[3] + ":" + array[4] + ":" + array[5];
return new Date(str);
}
function parseDateMicrosoft(str) {
try {
return new Date(parseInt(str.replace("/Date(", "").replace(")/", ""), 10));
}
catch (e) {
return null;
}
}
Date.prototype.formatDate = function (format) {
return formatDate(this, format);
};
Date.prototype.timeago = function () {
return timeago(this);
};
export {
formatDate,
timeago,
parseDateISO,
parseDateMicrosoft,
}