Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | import XDate from 'xdate';
interface DateData {
year: number;
month: number;
day: number;
timestamp: number;
dateString: string;
}
function padNumber(n: number): string {
if (n < 10) {
return '0' + n;
}
return n.toString();
}
export function xdateToData(xdate: XDate): DateData {
const dateString = xdate.toString('yyyy-MM-dd');
return {
year: xdate.getFullYear(),
month: xdate.getMonth() + 1,
day: xdate.getDate(),
timestamp: XDate(dateString, true).getTime(),
dateString: dateString
};
}
export function parseDate(d?: number | string | Date | XDate | DateData): XDate | undefined {
if (!d) {
return undefined;
} else if (typeof d === 'object' && 'timestamp' in d) { // conventional data timestamp
return XDate(d.timestamp, true);
} else if (d instanceof XDate) { // xdate
return XDate(d.toString('yyyy-MM-dd'), true);
} else if (d instanceof Date) { // javascript date
const dateString = d.getFullYear() + '-' + padNumber((d.getMonth() + 1)) + '-' + padNumber(d.getDate());
return XDate(dateString, true);
} else if (typeof d === 'object' && 'year' in d) {
const dateString = d.year + '-' + padNumber(d.month) + '-' + padNumber(d.day);
return XDate(dateString, true);
} else if (d) { // timestamp number or date formatted as string
return XDate(d, true);
}
return undefined;
} |