rays-javascript-extension/javascript-extensions/date.js

121 lines
4.1 KiB
JavaScript

Date.addDays = function (date, days) {
let result = new Date(date);
result.addDays(days);
return result;
};
Date.addMonths = function (date, months) {
let result = new Date(date);
result.addMonths(months);
return result;
};
Date.addYears = function (date, years) {
let result = new Date(date);
result.addYears(years);
return result;
};
Date.max = function (date1, date2) {
if (date1 == null) {
return date2;
}
if (date2 == null) {
return date1;
}
return ((new Date(date1) <= new Date(date2)) ? new Date(date2) : new Date(date1));
};
Date.min = function (date1, date2) {
if (date1 == null) {
return date2;
}
if (date2 == null) {
return date1;
}
return ((new Date(date1) <= new Date(date2)) ? new Date(date1) : new Date(date2));
};
Date.diffDays = function (date1, date2) {
return Math.ceil((new Date(date2).getTime() - new Date(date1).getTime()) / (1000 * 3600 * 24));
};
Date.today = function () {
let result = new Date();
result.setHours(0);
result.setMinutes(0);
result.setSeconds(0);
result.setMilliseconds(0);
return result;
};
Date.prototype.addDays = function (days) {
this.setDate(this.getDate() + parseInt(days));
}
Date.prototype.addMonths = function (months) {
this.setMonth(this.getMonth() + parseInt(months));
}
Date.prototype.addYears = function (years) {
this.setFullYear(this.getFullYear() + parseInt(years));
}
Date.prototype.toCString = function(pattern) {
let result = pattern;
result = result.replace("fffffff", this.getMilliseconds().toString().padStart(7, '0'));
result = result.replace("ffffff", this.getMilliseconds().toString().padStart(6, '0'));
result = result.replace("fffff", this.getMilliseconds().toString().padStart(5, '0'));
result = result.replace("yyyy", this.getFullYear().toString().padStart(4, '0'));
result = result.replace("MMMM", "{1}");
result = result.replace("dddd", "{2}");
result = result.replace("ffff", this.getMilliseconds().toString().padStart(4, '0'));
result = result.replace("yyy", this.getFullYear().toString().padStart(3, '0'));
result = result.replace("MMM", "{3}");
result = result.replace("ddd", "{4}");
result = result.replace("fff", this.getMilliseconds().toString().padStart(3, '0'));
result = result.replace("zzz", "");
result = result.replace("yy", this.getFullYear().toString().slice(-2));
result = result.replace("MM", (this.getMonth() + 1).toString().padStart(2, '0'));
result = result.replace("dd", this.getDate().toString().padStart(2, '0'));
result = result.replace("HH", this.getHours().toString().padStart(2, '0'));
result = result.replace("hh", (this.getHours() > 12 ? (this.getHours() - 12) : this.getHours()).toString().padStart(2, '0'));
result = result.replace("mm", this.getMinutes().toString().padStart(2, '0'));
result = result.replace("ss", this.getSeconds().toString().padStart(2, '0'));
result = result.replace("ff", this.getMilliseconds().toString().padStart(2, '0'));
result = result.replace("tt", "{5}");
result = result.replace("zz", "");
result = result.replace("y", this.getFullYear().toString());
result = result.replace("M", (this.getMonth() + 1).toString());
result = result.replace("d", this.getDate().toString());
result = result.replace("H", this.getHours().toString());
result = result.replace("h", (this.getHours() > 12 ? (this.getHours() - 12) : this.getHours()).toString());
result = result.replace("m", this.getMinutes().toString());
result = result.replace("s", this.getSeconds().toString());
result = result.replace("z", "");
result = result.replace("t", "{6}");
result = result.replace("Z", "");
result = result.replace("{1}", this.toLocaleString('default', { month: 'long' }));
result = result.replace("{2}", this.toLocaleString('default', { weekday: 'long' }));
result = result.replace("{3}", this.toLocaleString('default', { month: 'short' }));
result = result.replace("{4}", this.toLocaleString('default', { weekday: 'short' }));
result = result.replace("{5}", (this.getHours() >= 12 ? "PM" : "AM"));
result = result.replace("{6}", (this.getHours() >= 12 ? "P" : "A"));
return result;
}