WIP
This commit is contained in:
@@ -0,0 +1,190 @@
|
||||
|
||||
export class DateUtils {
|
||||
|
||||
|
||||
// public static getIntervalDays(from: Date, to: Date, daysOfYear: DaysOfYear = DaysOfYear.ThirtyDaysPerMonth, countEndDate: boolean = false): number {
|
||||
// let isNegative = false;
|
||||
// if (from > to) {
|
||||
// isNegative = true;
|
||||
// let temp = new Date(to);
|
||||
// to = from;
|
||||
// from = temp;
|
||||
// }
|
||||
|
||||
// var days = 0;
|
||||
// if (from && to) {
|
||||
// //Get date without time
|
||||
// from = new Date(from.getFullYear(), from.getMonth(), from.getDate());
|
||||
// to = new Date(to.getFullYear(), to.getMonth(), to.getDate());
|
||||
// var differenceTime = to.getTime() - from.getTime();
|
||||
// if (differenceTime > 0) {
|
||||
// if (daysOfYear == DaysOfYear.ThirtyDaysPerMonth) {
|
||||
// var fromYear = from.getFullYear();
|
||||
// var toYear = to.getFullYear();
|
||||
// var fromMonth = from.getMonth() + 1;
|
||||
// var toMonth = to.getMonth() + 1;
|
||||
|
||||
// var fromDays = from.getDate() > 30 ? 30 : from.getDate();
|
||||
// var toDays = to.getDate();
|
||||
|
||||
// days += 30 - fromDays;
|
||||
// days += toDays;
|
||||
// //calculate full 12 months years
|
||||
// if (toYear > (fromYear + 1)) {
|
||||
// days += (toYear - fromYear - 1) * 12 * 30;
|
||||
// }
|
||||
|
||||
// //if it's two different years, calculate the interval months
|
||||
// if (toYear > fromYear) {
|
||||
// days += (12 - fromMonth) * 30;
|
||||
// days += (toMonth - 1) * 30;
|
||||
// }
|
||||
// else {
|
||||
// //same year
|
||||
// days += (toMonth - fromMonth - 1) * 30
|
||||
// }
|
||||
// }
|
||||
// else {
|
||||
// // To calculate the no. of days between two dates
|
||||
// days = Math.round(differenceTime / (1000 * 3600 * 24));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// return (days + (countEndDate ? 1 : 0)) * (isNegative ? -1 : 1);
|
||||
// }
|
||||
|
||||
public static addDays(date: Date, days: number): Date {
|
||||
if (date) {
|
||||
var result = new Date(date);
|
||||
result.setDate(result.getDate() + days);
|
||||
return result;
|
||||
}
|
||||
return date;
|
||||
}
|
||||
|
||||
public static format(date: Date, format: string = 'MM/dd/yyyy hh:mm:ss', nullFormat: string = ''): string {
|
||||
if (date) {
|
||||
var z = {
|
||||
M: date.getMonth() + 1,
|
||||
d: date.getDate(),
|
||||
H: date.getHours(),
|
||||
h: (date.getHours() == 0 ? date.getHours() + 12 : date.getHours() > 12 ? date.getHours() - 12 : date.getHours()),
|
||||
m: date.getMinutes(),
|
||||
s: date.getSeconds(),
|
||||
a: (date.getHours() > 11 ? 'PM' : 'AM')
|
||||
};
|
||||
format = format.replace(/(M+|d+|H+|h+|m+|s+|a+)/g, function (v) {
|
||||
return ((v.length > 1 ? "0" : "") + z[v.slice(-1) as keyof typeof z]).slice(-2);
|
||||
});
|
||||
|
||||
return format.replace(/(y+)/g, function (v) {
|
||||
return date.getFullYear().toString().slice(-v.length)
|
||||
});
|
||||
}
|
||||
return nullFormat;
|
||||
}
|
||||
public static isValidDate(d: Date): boolean {
|
||||
return d instanceof Date && d.getTime() == d.getTime();
|
||||
}
|
||||
public static parse(value: string | Date | null | undefined, changeToLocalTime = false): Date | null {
|
||||
if (value) {
|
||||
if (typeof value === 'string' && value.includes('-')) {
|
||||
value = this.parseLocalDate(value);
|
||||
return value;
|
||||
}
|
||||
value = new Date(value);
|
||||
if (changeToLocalTime) {
|
||||
//todo: change to local time from UTC
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
return value
|
||||
}
|
||||
public static parseLocalDate(localDate: string): Date {
|
||||
const [year, month, day] = localDate.split('-').map(Number);
|
||||
return new Date(year, month, day);
|
||||
}
|
||||
public static toLocalDate(date: Date): string {
|
||||
return this.format(date, 'yyyy-MM-dd');
|
||||
}
|
||||
public static getToday(endOfDay: boolean = false): Date {
|
||||
let value = new Date();
|
||||
if (!endOfDay) {
|
||||
value.setHours(0, 0, 0, 0);
|
||||
}
|
||||
else {
|
||||
value.setHours(23, 59, 59, 999);
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
public static getBeginOfDate(value: Date): Date {
|
||||
if (value) {
|
||||
value = new Date(value);
|
||||
value.setHours(0, 0, 0, 0);
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
public static getEndOfDate(value: Date): Date {
|
||||
if (value) {
|
||||
value = new Date(value);
|
||||
value.setHours(23, 59, 59, 999);
|
||||
}
|
||||
return value
|
||||
}
|
||||
public static getEndOfMonth(value: Date): Date {
|
||||
if (value) {
|
||||
return new Date(value.getFullYear(), value.getMonth() + 1, 0)
|
||||
}
|
||||
return value;
|
||||
}
|
||||
public static getFirstDayOfCurrentMonth = (): Date => {
|
||||
const now = new Date();
|
||||
return new Date(now.getFullYear(), now.getMonth(), 1);
|
||||
};
|
||||
|
||||
public static getLastDayOfCurrentMonth = (): Date => {
|
||||
const now = new Date();
|
||||
return new Date(now.getFullYear(), now.getMonth() + 1, 0);
|
||||
};
|
||||
|
||||
public static isSameDate(date: Date, comparison: Date): boolean {
|
||||
if (!date || !comparison) return (!date && !comparison);
|
||||
date = this.parse(date, false) as Date;
|
||||
comparison = this.parse(comparison, false) as Date;
|
||||
return date.getFullYear() == comparison.getFullYear() && date.getMonth() == comparison.getMonth() && date.getDate() == comparison.getDate();
|
||||
}
|
||||
|
||||
|
||||
public static getTimeStamp() {
|
||||
var now = new Date();
|
||||
return ((now.getMonth() + 1) + '/' + (now.getDate()) + '/' + now.getFullYear() + " " + now.getHours() + ':'
|
||||
+ ((now.getMinutes() < 10) ? ("0" + now.getMinutes()) : (now.getMinutes())) + ':' + ((now.getSeconds() < 10) ? ("0" + now
|
||||
.getSeconds()) : (now.getSeconds())));
|
||||
}
|
||||
|
||||
|
||||
public static getDatesBetween(startDate: Date, endDate: Date): Date[] {
|
||||
startDate = this.getBeginOfDate(startDate);
|
||||
endDate = this.getBeginOfDate(endDate);
|
||||
let result = [startDate];
|
||||
if (startDate < endDate) {
|
||||
let tempDate = new Date(startDate);
|
||||
while (tempDate < endDate) {
|
||||
tempDate = this.addDays(tempDate, 1);
|
||||
result.push(tempDate);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the stored time value in milliseconds since midnight, January 1, 1970 UTC., return 0 if date is null
|
||||
*/
|
||||
public static getTime(date?: Date): number {
|
||||
return date != null ? date.getTime() : 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user