fix(core): update
This commit is contained in:
parent
388649659c
commit
30d18db4af
@ -16,4 +16,9 @@ tap.test('should create a date and time with European Format', async () => {
|
|||||||
console.log(extendedDate);
|
console.log(extendedDate);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
tap.test('should create a European date string', async () => {
|
||||||
|
const extendedDate = smarttime.ExtendedDate.fromHyphedDate('2018-02-13');
|
||||||
|
expect(extendedDate.exportToEuropeanDate()).to.equal('13.02.2018');
|
||||||
|
});
|
||||||
|
|
||||||
tap.start();
|
tap.start();
|
||||||
|
@ -2,7 +2,20 @@ import * as plugins from './smarttime.plugins';
|
|||||||
|
|
||||||
export type TAvailableZone = 'Europe/Berlin';
|
export type TAvailableZone = 'Europe/Berlin';
|
||||||
|
|
||||||
|
export interface IDateUnits {
|
||||||
|
year: number;
|
||||||
|
yearString: string;
|
||||||
|
month: number;
|
||||||
|
monthString: string;
|
||||||
|
monthName: string;
|
||||||
|
day: number;
|
||||||
|
dayString: string;
|
||||||
|
dayOfTheWeek: number;
|
||||||
|
dayOfTheWeekName: string;
|
||||||
|
}
|
||||||
|
|
||||||
export class ExtendedDate extends Date {
|
export class ExtendedDate extends Date {
|
||||||
|
// STATIC factories
|
||||||
public static fromMillis(milliSeconds: number) {
|
public static fromMillis(milliSeconds: number) {
|
||||||
return new ExtendedDate(milliSeconds);
|
return new ExtendedDate(milliSeconds);
|
||||||
}
|
}
|
||||||
@ -18,12 +31,28 @@ export class ExtendedDate extends Date {
|
|||||||
return new ExtendedDate(unixMilli);
|
return new ExtendedDate(unixMilli);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
/**
|
||||||
|
* creates an Extended date from a hypedDate like "2018-03-28"
|
||||||
|
* @param dateString
|
||||||
|
*/
|
||||||
|
public static fromHyphedDate(dateString: string) {
|
||||||
|
// guards
|
||||||
|
// implementation
|
||||||
|
const dateMillis = new Date(dateString).getTime();
|
||||||
|
return new ExtendedDate(dateMillis);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Same as .fromEuropeanDate(), but accepts additional timeArg and zoneArg
|
||||||
|
*/
|
||||||
public static fromEuropeanDateAndTime(
|
public static fromEuropeanDateAndTime(
|
||||||
europeanDateArg: string,
|
europeanDateArg: string,
|
||||||
timeArg: string = '12:00:00',
|
timeArg: string = '12:00:00',
|
||||||
zoneArg: TAvailableZone = 'Europe/Berlin'
|
zoneArg: TAvailableZone = 'Europe/Berlin'
|
||||||
) {
|
) {
|
||||||
|
// guards
|
||||||
|
|
||||||
|
// implementation
|
||||||
const dateArray = /(.*)\.(.*)\.(.*)/.exec(europeanDateArg);
|
const dateArray = /(.*)\.(.*)\.(.*)/.exec(europeanDateArg);
|
||||||
const sliceDate = (dateString: string) => {
|
const sliceDate = (dateString: string) => {
|
||||||
return `0${dateString}`.slice(-2);
|
return `0${dateString}`.slice(-2);
|
||||||
@ -38,7 +67,54 @@ export class ExtendedDate extends Date {
|
|||||||
return new ExtendedDate(unixMilli);
|
return new ExtendedDate(unixMilli);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// INSTANCE
|
||||||
constructor(unixMilli: number) {
|
constructor(unixMilli: number) {
|
||||||
super(unixMilli);
|
super(unixMilli);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public exportToEuropeanDate() {
|
||||||
|
const units = this.exportToUnits();
|
||||||
|
return `${units.dayString}.${units.monthString}.${units.yearString}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* exports units
|
||||||
|
*/
|
||||||
|
public exportToUnits(): IDateUnits {
|
||||||
|
const monthsArray = [
|
||||||
|
'January',
|
||||||
|
'February',
|
||||||
|
'March',
|
||||||
|
'April',
|
||||||
|
'May',
|
||||||
|
'June',
|
||||||
|
'July',
|
||||||
|
'August',
|
||||||
|
'September',
|
||||||
|
'October',
|
||||||
|
'November',
|
||||||
|
'December'
|
||||||
|
];
|
||||||
|
const daysArray = [
|
||||||
|
'Monday',
|
||||||
|
'Tuesday',
|
||||||
|
'Wednesday',
|
||||||
|
'Thursday',
|
||||||
|
'Friday',
|
||||||
|
'Saturday',
|
||||||
|
'Sunday'
|
||||||
|
];
|
||||||
|
return {
|
||||||
|
year: this.getFullYear(),
|
||||||
|
yearString: `${this.getFullYear()}`,
|
||||||
|
month: this.getMonth() + 1,
|
||||||
|
monthString: ("0" + (this.getMonth() + 1)).slice(-2),
|
||||||
|
monthName: monthsArray[this.getMonth()],
|
||||||
|
day: this.getDate(),
|
||||||
|
dayString: ("0" + this.getDate()).slice(-2),
|
||||||
|
dayOfTheWeek: this.getDay(),
|
||||||
|
dayOfTheWeekName: daysArray[this.getDay()]
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user