import addon from "../utils/addon"; import { NativeElement, Component } from "../core/Component"; import { checkIfNativeElement } from "../utils/helpers"; import { QVariant } from "./QVariant"; import { QDate } from "./QDate"; import { QTime } from "./QTime"; import { TimeSpec, DateFormat } from "../QtEnums"; export class QDateTime extends Component { constructor(arg?: NativeElement, time?: NativeElement) { const count = arguments.length; let native: NativeElement; if (arg && time) { native = new addon.QDateTime(arg.native, time.native); } else if (count == 1 && checkIfNativeElement(arg)) { native = arg as NativeElement; } else { native = new addon.QDateTime(); } super(native); } addDays(ndays: number): QDateTime { return new QDateTime(this.native?.addDays(ndays)); } addMSecs(msecs: number): QDateTime { return new QDateTime(this.native?.addMSecs(msecs)); } addMonths(nmonths: number): QDateTime { return new QDateTime(this.native?.addMonths(nmonths)); } addSecs(s: number): QDateTime { return new QDateTime(this.native?.addSecs(s)); } addYears(nyears: number): QDateTime { return new QDateTime(this.native?.addYears(nyears)); } date(): QDate { return new QDate(this.native?.date()); } daysTo(other: QDateTime): number { return this.native?.daysTo(other.native); } isDaylightTime(): boolean { return this.native?.isDaylightTime(); } isNull(): boolean { return this.native?.isNull(); } isValid(): boolean { return this.native?.isValid(); } msecsTo(other: QDateTime): number { return this.native?.msecsTo(other.native); } offsetFromUtc(): number { return this.native?.offsetFromUtc(); } secsTo(other: QDateTime): number { return this.native?.secsTo(other.native); } setDate(date: QDate): void { this.native?.setDate(date.native); } setMSecsSinceEpoch(msecs: number): void { this.native?.setMSecsSinceEpoch(msecs); } setOffsetFromUtc(offsetSeconds: number): void { this.native?.setOffsetFromUtc(offsetSeconds); } setSecsSinceEpoch(secs: number): void { this.native?.setSecsSinceEpoch(secs); } setTime(time: QTime): void { this.native?.setTime(time.native); } setTimeSpec(spec: TimeSpec): void { this.native?.setTimeSpec(spec); } time(): QTime { return new QTime(this.native?.time()); } timeSpec(): TimeSpec { return this.native?.timeSpec(); } toLocalTime(): QDateTime { return new QDateTime(this.native?.toLocalTime()); } toMSecsSinceEpoch(): number { return this.native?.toMSecsSinceEpoch(); } toOffsetFromUtc(offsetSeconds: number): QDateTime { return new QDateTime(this.native?.toOffsetFromUtc(offsetSeconds)); } toSecsSinceEpoch(): number { return this.native?.toSecsSinceEpoch(); } toString(format: string | DateFormat): string { return this.native?.toString$(format); } toTimeSpec(spec: TimeSpec): QDateTime { return new QDateTime(this.native?.toTimeSpec(spec)); } toUTC(): QDateTime { return new QDateTime(this.native?.toUTC()); } static currentDateTime(): QDateTime { return new QDateTime(addon.QDateTime.currentDateTime()); } static currentDateTimeUtc(): QDateTime { return new QDateTime(addon.QDateTime.currentDateTimeUtc()); } static currentMSecsSinceEpoch(): number { return addon.QDateTime.currentMSecsSinceEpoch(); } static currentSecsSinceEpoch(): number { return addon.QDateTime.currentSecsSinceEpoch(); } static fromString( dateTimeString: string, format: string | DateFormat ): QDateTime { return addon.QDateTime.fromString(dateTimeString, format); } static fromQVariant(variant: QVariant): QDateTime { return new QDateTime(addon.QDateTime.fromQVariant(variant.native)); } }