/** timeNumToDateJson
*
* @param :
* data @param Object timeStamp 时间戳(不传默认当前时间戳)
* data @param String timeStamp 时间戳(不传默认当前时间戳)
* data @param Number timeStamp 时间戳(不传默认当前时间戳)
*
* @return defaultKey:(zh带中文)
* Y: 年
* M: 月
* D: 日
* h: 时
* m: 分
* s: 秒
* W: 星期
*
* @return fnKey:
* YMD() @param data:
* format 是否格式化 0->'00'
* lang 仅支持中文日期(zh)和数字日期(默认)
* mark 数字日期间隔,仅在数字日期存在("-")
* @param hmsData:
* @param 提供以" "追加时分秒,参数对应 return hms()
* hms() data @param:
* format 是否格式化 0->'00'
* mark 时间间隔(默认"-")
* format() n @param: 仅数字
* @return 0->'00'
*
* eg : setInterval(() => {
* console.log(timeNumToDateJson().YMD({lang:"zh"}, true))
* }, 1000);
*/
// Class
class FormatTime {
constructor(data) {
let dataIsObj = typeof data === "object"
let time = dataIsObj ? data.timeStamp ? new Date(data.timeStamp) : new Date() : data ? new Date(data) : new Date();
this.Y = time.getFullYear();
this.M = time.getMonth() + 1;
this.D = time.getDate();
this.W = time.getDay();
this.h = time.getHours();
this.m = time.getMinutes();
this.s = time.getSeconds();
this.Y_zh = `${time.getFullYear()}年`;
this.M_zh = `${time.getMonth() + 1}月`;
this.D_zh = `${time.getDate()}日`;
this.W_zh = `星期${"日一二三四五六".charAt(time.getDay())}`;
}
YMD(data, hmsData) {
let isFormat = ((typeof data).toLocaleLowerCase() === "boolean" && data) || (data && data.format);
let isZh = data && data.lang && data.lang.toLocaleLowerCase() === "zh";
let spaceSymbol = !isZh && data && data.mark ? data.mark : "-";
let formatStr = [this.Y, this.M, this.D].map(FormatTime.format).join(spaceSymbol);
formatStr = isZh ? `${FormatTime.format(this.Y)}年${FormatTime.format(this.M)}月${FormatTime.format(this.D)}日` : formatStr;
let defaultStr = isZh ? `${this.Y}年${this.M}月${this.D}日` : [this.Y, this.M, this.D].join(spaceSymbol);
let returnStr = isFormat ? formatStr : defaultStr;
return hmsData !== undefined ? `${returnStr} ${this.hms(hmsData)}` : returnStr;
}
hms(data) {
let isFormat = ((typeof data).toLocaleLowerCase() === "boolean" && data) || (data && data.format)
let spaceSymbol = data && data.mark ? data.mark : ":";
let formatStr = [this.h, this.m, this.s].map(FormatTime.format).join(spaceSymbol);
return isFormat ? formatStr : [this.h, this.m, this.s].join(spaceSymbol);
}
static format(n){
return n < 10 ? `0${n}` : n;
}
}
console.log(new FormatTime().YMD(true,false))
// Function
const formatTime= (data) => {
let dataIsObj = typeof data === "object"
let time = dataIsObj ? data.timeStamp ? new Date(data.timeStamp) : new Date() : data ? new Date(data) : new Date();
return {
Y: time.getFullYear(),
M: time.getMonth() + 1,
D: time.getDate(),
W: time.getDay(),
h: time.getHours(),
m: time.getMinutes(),
s: time.getSeconds(),
Y_zh: `${time.getFullYear()}年`,
M_zh: `${time.getMonth() + 1}月`,
D_zh: `${time.getDate()}日`,
W_zh: `星期${"日一二三四五六".charAt(time.getDay())}`,
YMD: function(data, hmsData = undefined) {
let isFormat = ((typeof data).toLocaleLowerCase() === "boolean" && data) || (data && data.format);
let isZh = data && data.lang && data.lang.toLocaleLowerCase() === "zh";
let spaceSymbol = !isZh && data && data.mark ? data.mark : "-";
let formatStr = [this.Y, this.M, this.D].map(this.format).join(spaceSymbol);
formatStr = isZh ? `${this.format(this.Y)}年${this.format(this.M)}月${this.format(this.D)}日` : formatStr;
let defaultStr = isZh ? `${this.Y}年${this.M}月${this.D}日` : [this.Y, this.M, this.D].join(spaceSymbol);
let returnStr = isFormat ? formatStr : defaultStr;
return hmsData !== undefined ? `${returnStr} ${this.hms(hmsData)}` : returnStr;
},
hms: function(data) {
let isFormat = ((typeof data).toLocaleLowerCase() === "boolean" && data) || (data && data.format)
let spaceSymbol = data && data.mark ? data.mark : ":";
let formatStr = [this.h, this.m, this.s].map(this.format).join(spaceSymbol);
return isFormat ? formatStr : [this.h, this.m, this.s].join(spaceSymbol);
},
format: function(n) {
return n < 10 ? `0${n}` : n;
}
};
}
console.log(formatTime().YMD(true,false))