-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
"Duplicate declaration" for class name which equals to variable name. This is normal for class expression

/**
* Форматирование даты в стиле Java SimpleDateFormat.
*/
class DateFormatter
{
constructor()
{
const DateMacro = class DateMacro
{
constructor(macro, leadingChars, dateFunc)
{
this.macro = macro;
this.leadingChars = leadingChars;
this.dateFunc = dateFunc;
}
pad(value)
{
const len = value.length, minLen = this.leadingChars.length;
return (len >= minLen) ? value : this.leadingChars.substring(len) + value;
}
replace(pattern, date)
{
if (pattern.indexOf(this.macro) < 0) return pattern;
const value = this.pad("" + this.dateFunc(date));
return pattern.replace(this.macro, value);
}
};
this.macros = [
new DateMacro("yyyy", "0000", date => date.getFullYear()),
new DateMacro("yy", "00", date => date.getFullYear() % 100),
new DateMacro("MM", "00", date => date.getMonth() + 1),
new DateMacro("M", "0", date => date.getMonth() + 1),
new DateMacro("dd", "00", date => date.getDate()),
new DateMacro("d", "0", date => date.getDate()),
new DateMacro("HH", "00", date => date.getHours()),
new DateMacro("H", "0", date => date.getHours()),
new DateMacro("mm", "00", date => date.getMinutes()),
new DateMacro("m", "0", date => date.getMinutes()),
new DateMacro("ss", "00", date => date.getSeconds()),
new DateMacro("s", "0", date => date.getSeconds()),
new DateMacro("SSS", "000", date => date.getMilliseconds()),
new DateMacro("S", "0", date => date.getMilliseconds())
];
}
format(date, format)
{
let result = format;
for (const macro of this.macros) result = macro.replace(result, date);
return result;
}
}
DateFormatter.instance = new DateFormatter();
Date.prototype.format = function (format) { return DateFormatter.instance.format(this, format); };
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels