121 lines
2.7 KiB
TypeScript
121 lines
2.7 KiB
TypeScript
|
import StringTools from "./StringTools";
|
||
|
|
||
|
export default class TimeLengthInput {
|
||
|
public readonly value: string;
|
||
|
|
||
|
constructor(input: string) {
|
||
|
this.value = StringTools.ReplaceAll(input, ',', '');
|
||
|
}
|
||
|
|
||
|
public GetDays(): number {
|
||
|
return this.GetValue('d');
|
||
|
}
|
||
|
|
||
|
public GetHours(): number {
|
||
|
return this.GetValue('h');
|
||
|
}
|
||
|
|
||
|
public GetMinutes(): number {
|
||
|
return this.GetValue('m');
|
||
|
}
|
||
|
|
||
|
public GetSeconds(): number {
|
||
|
return this.GetValue('s');
|
||
|
}
|
||
|
|
||
|
public GetMilliseconds(): number {
|
||
|
const days = this.GetDays();
|
||
|
const hours = this.GetHours();
|
||
|
const minutes = this.GetMinutes();
|
||
|
const seconds = this.GetSeconds();
|
||
|
|
||
|
let milliseconds = 0;
|
||
|
|
||
|
milliseconds += seconds * 1000;
|
||
|
milliseconds += minutes * 60 * 1000;
|
||
|
milliseconds += hours * 60 * 60 * 1000;
|
||
|
milliseconds += days * 24 * 60 * 60 * 1000;
|
||
|
|
||
|
return milliseconds;
|
||
|
}
|
||
|
|
||
|
public GetDateFromNow(): Date {
|
||
|
const now = Date.now();
|
||
|
|
||
|
const dateFromNow = now
|
||
|
+ (1000 * this.GetSeconds())
|
||
|
+ (1000 * 60 * this.GetMinutes())
|
||
|
+ (1000 * 60 * 60 * this.GetHours())
|
||
|
+ (1000 * 60 * 60 * 24 * this.GetDays());
|
||
|
|
||
|
return new Date(dateFromNow);
|
||
|
}
|
||
|
|
||
|
public GetLength(): string {
|
||
|
const days = this.GetDays();
|
||
|
const hours = this.GetHours();
|
||
|
const minutes = this.GetMinutes();
|
||
|
const seconds = this.GetSeconds();
|
||
|
|
||
|
const value = [];
|
||
|
|
||
|
if (days) {
|
||
|
value.push(`${days} days`);
|
||
|
}
|
||
|
|
||
|
if (hours) {
|
||
|
value.push(`${hours} hours`);
|
||
|
}
|
||
|
|
||
|
if (minutes) {
|
||
|
value.push(`${minutes} minutes`);
|
||
|
}
|
||
|
|
||
|
if (seconds) {
|
||
|
value.push(`${seconds} seconds`);
|
||
|
}
|
||
|
|
||
|
return value.join(", ");
|
||
|
}
|
||
|
|
||
|
public GetLengthShort(): string {
|
||
|
const days = this.GetDays();
|
||
|
const hours = this.GetHours();
|
||
|
const minutes = this.GetMinutes();
|
||
|
const seconds = this.GetSeconds();
|
||
|
|
||
|
const value = [];
|
||
|
|
||
|
if (days) {
|
||
|
value.push(`${days}d`);
|
||
|
}
|
||
|
|
||
|
if (hours) {
|
||
|
value.push(`${hours}h`);
|
||
|
}
|
||
|
|
||
|
if (minutes) {
|
||
|
value.push(`${minutes}m`);
|
||
|
}
|
||
|
|
||
|
if (seconds) {
|
||
|
value.push(`${seconds}s`);
|
||
|
}
|
||
|
|
||
|
return value.join(" ");
|
||
|
}
|
||
|
|
||
|
private GetValue(designation: string): number {
|
||
|
const valueSplit = this.value.split(' ');
|
||
|
|
||
|
const desString = valueSplit.find(x => x.charAt(x.length - 1) == designation);
|
||
|
|
||
|
if (!desString) return 0;
|
||
|
|
||
|
const desNumber = Number(desString.substring(0, desString.length - 1));
|
||
|
|
||
|
if (!desNumber) return 0;
|
||
|
|
||
|
return desNumber;
|
||
|
}
|
||
|
}
|