NAME

Quiq::Time - Klasse zur Repräsentation von Datum und Uhrzeit

BASE CLASS

Quiq::Object

DESCRIPTION

Ein Objekt der Klasse Quiq::Time repräsentiert eine Zeitangabe, bestehend aus den Komponenten Jahr (Y), Monat (M), Tag (D), Stunde (h), Minute (m) und Sekunde (s). Die Klasse stellt Methoden zur Manipulation der Zeitangabe zur Verfügung.

Die Zeitangabe ist keiner bestimmten Zeitzone zugeordnet, alle Tage haben 24 Stunden (keine Sommerzeit- und Winterzeit-Umschaltung) und alle Tage haben genau 86400 Sekunden (keine Schaltsekunden).

METHODS

Konstruktor

new() - Instantiiere Zeitobjekt

Synopsis

$ti = $class->new($year,$month,$day,$hour,$minute,$second);
$ti = $class->new($year,$month,$day,$hour,$minute);
$ti = $class->new($year,$month,$day,$hour);
$ti = $class->new($year,$month,$day);
$ti = $class->new($year,$month);
$ti = $class->new($year);
$ti = $class->new(local=>$epoch);
$ti = $class->new(utc=>$epoch);
$ti = $class->new(dmy=>'D M Y');
$ti = $class->new(dmyhms=>'D M Y H M S');
$ti = $class->new(ymd=>'Y M D');
$ti = $class->new(ymdhm=>'Y M D');
$ti = $class->new(ymdhms=>'Y M D H M S');
$ti = $class->new(parse=>'D.M.Y ...'|'M/D/Y ...'|'Y-M-D ...');
$ti = $class->new;

Description

Instantiiere Zeitobjekt, setze die Zeitkomponenten auf die angegebenen Werte und liefere das Objekt zurück.

Aufrufargumente siehe $ti->set().

copy() - Kopiere Zeitobjekt

Synopsis

$ti2 = $ti->copy;

Description

Kopiere Zeitobjekt und liefere die Kopie zurück.

asArray() - Liefere Zeit als Array

Synopsis

($year,$month,$day,$hour,$minute,$second) = $ti->asArray;

Zeit/Datum setzen

set() - Setze Zeit neu

Synopsis

$ti = $class->set($year,$month,$day,$hour,$minute,$second);
$ti = $class->set($year,$month,$day,$hour,$minute);
$ti = $class->set($year,$month,$day,$hour);
$ti = $class->set($year,$month,$day);
$ti = $class->set($year,$month);
$ti = $class->set($year);
$ti = $class->set(local=>$epoch);
$ti = $class->set(utc=>$epoch);
$ti = $class->set(dmy=>'D M Y');
$ti = $class->set(dmyhm=>'D M Y H M');
$ti = $class->set(dmyhms=>'D M Y H M S');
$ti = $class->set(ymd=>'Y M D');
$ti = $class->set(ymdhm=>'Y M D');
$ti = $class->set(ymdhms=>'Y M D H M S');
$ti = $class->set(parse=>'D.M.Y ...'|'M/D/Y ...'|'Y-M-D ...');
$ti = $class->set;

Description

Setze die Zeit gemäß der angegebenen Zeitkomponenten und liefere das Zeitobjekt zurück.

Alle nicht angegebenen Komponenten werden auf ihren kleinsten Wert initialisiert (1 bei bei Monat und Tag, 0 bei Stunde, Minute, Sekunde).

Ein Aufruf ohne Argument setzt das Objekt auf den Beginn der Epoche (1.1.1970 0 Uhr).

Bei den Formaten dmy, dmyhms, ... sind beliebige Trennzeichen zwischen den einzelnen Zahlen erlaubt.

setTime() - Setze Zeitanteil

Synopsis

$ti = $ti->setTime($hour,$minute,$second);

Description

Setze die Zeit auf die angegebenen Stunden, Minuten, Sekunden und liefere das Zeitobjekt zurück. Wird für eine Zeitkomponente Cltundef> angegeben, wird diese nicht gesetzt.

truncate() - Kürze Zeitkomponenten

Synopsis

$ti = $ti->truncate($unit);

Description

Kürze Zeit auf Jahr (Y), Monat (M), Tag (D), Stunde (h) oder Minute (m), d.h. setze alle kleineren Zeitkomponenten auf ihren kleinsten Wert und liefere das Zeitobjekt zurück.

Example

$ti = Quiq::Time->new(2005,12,28,22,56,37);
$ti->truncate('D');
==>
2005-12-28-00-00-00

Abfrage von Zeitkomponenten

year() - Liefere Jahr

Synopsis

$year = $ti->year;

month() - Liefere Monat (Nummer)

Synopsis

$month = $ti->month;

Description

Liefere die Nummer des Monats. Wertebereich: 1-12.

day() - Liefere Tag des Monats (Nummer)

Synopsis

$day = $ti->day;

dayAbbr() - Abgekürzter Wochentagsname

Synopsis

$str = $ti->dayAbbr;

Description

Liefere abgekürzten Wochentagsnamen (Mo, Di, Mi, Do, Fr, Sa, So).

dayName() - Wochentagsname

Synopsis

$n = $ti->dayName;

Description

Liefere Wochentagsname (Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag).

monthName() - Monatsname

Synopsis

$str = $ti->monthName;

Description

Liefere Monatsnamen (Januar, Februar, ..., Dezember).

dayOfWeek() - Wochentagsnummer

Synopsis

$n = $ti->dayOfWeek;

Description

Liefere Wochentagsnummer im Bereich 1-7, 1 = Montag.

daysOfMonth() - Anzahl der Tage des Monats

Synopsis

$n = $ti->daysOfMonth;

Description

Liefere die Anzahl der Tage des Monats, also 31 für Januar, 28 oder 29 für Februar usw.

dayOfYear() - Tag des Jahres (Nummer)

Synopsis

$n = $ti->dayOfYear;

Description

Liefere die Tagesnummer innerhalb des Jahres.

weekOfYear() - Kalenderwoche (Jahr, Wochennummer)

Synopsis

($year,$n) = $ti->weekOfYear;

Description

Liefere die Kalenderwoche, bestehend aus Jahr und Wochennummer gemäß DIN 1355.

epoch() - Epoch-Zeit

Synopsis

$epoch = $ti->epoch('local');
$epoch = $ti->epoch('utc');
$epoch = $ti->epoch;

Description

Liefere Epoch-Zeit. Ein Aufruf ohne Argument ist äquivalent zu $ti->epoch('utc').

isLeapyear() - Prüfe auf Schaltjahr

Synopsis

$bool = $ti->isLeapyear;

Description

Prüfe, ob Jahr ein Schaltjahr ist. Wenn ja, liefere "wahr", andernfalls "falsch".

Ausgabe von Zeit/Datum

strftime() - Formatiere per strftime formatierte Zeit

Synopsis

$str = $ti->strftime($fmt);

ddmmyyyy() - Liefere formatiertes Datum

Synopsis

$str = $ti->ddmmyyyy;
$str = $ti->ddmmyyyy($sep);

Description

Liefere Datum im Format DD.MM.YYYY, wobei Tag (DD) und Monat (MM) mit führender 0 angegeben werden. Ist $sep angegeben, wird anstelle des Punktes (.) die betreffende Zeichenkette als Trenner verwendet.

ddmmyyyyhhmmss() - Liefere formatiertes Datum+Zeit

Synopsis

$str = $ti->ddmmyyyyhhmmss;

Description

Liefere Datum/Zeit im Format "DD.MM.YYYY HH:MI:SS". Der Aufruf ist äquvalent zu

$str = $ti->ddmmyyyy.' '.$ti->hhmmss;

dmy() - Liefere formatiertes Datum

Synopsis

$str = $ti->dmy;
$str = $ti->dmy($sep);

Description

Liefere Datum im Format D.M.YYYY, wobei Tag (D) und Monat (M) ohne führende 0 angegeben werden. Ist $sep angegeben, wird anstelle des Punktes (.) die betreffende Zeichenkette als Trenner verwendet.

dmyhhmmss() - Liefere formatiertes Datum+Zeit

Synopsis

$str = $ti->dmyhhmmss;

Description

Liefere Datum/Zeit im Format "D.M.YYYY HH:MI:SS". Der Aufruf ist äquvalent zu

$str = $ti->dmy.' '.$ti->hhmmss;

dump() - Liefere Zeitobjekt als Zeichenkette

Synopsis

$str = $ti->dump;
$str = $ti->dump($sep);

Description

Liefere den internen Zustand des Zeitobjekts als Zeichenkette im Format

YYYY-MM-DD-hh-mm-ss

Ist $sep angegeben, verwende diesen String anstelle von '-' als Trenner.

hhmmss() - Liefere formatierte Zeit

Synopsis

$str = $ti->hhmmss;
$str = $ti->hhmmss($sep);

Description

Liefere Zeit im Format HH:MM:SS, wobei alle Angaben zweistellig sind, also ggf. eine führende 0 vorangestellt wird. Ist $sep angegeben, wird anstelle des Doppelpunkts (:) die betreffende Zeichenkette als Trenner verwendet.

hhmm() - Liefere formatierte Zeit

Synopsis

$str = $ti->hhmm;
$str = $ti->hhmm($sep);

Description

Liefere Zeit im Format HH:MM, wobei alle Angaben zweistellig sind, also ggf. eine führende 0 vorangestellt wird. Ist $sep angegeben, wird anstelle des Doppelpunkts (:) die betreffende Zeichenkette als Trenner verwendet.

yymmdd() - Liefere formatiertes Datum

Synopsis

$str = $ti->yymmdd;
$str = $ti->yymmdd($sep);

Description

Liefere Datum im Format YY-MM-DD, wobei das Jahr zweistellig angegeben ist und Tag (DD) und Monat (MM) mit führender 0 angegeben werden. Ist $sep angegeben, wird anstelle des Bindestrichs (-) die betreffende Zeichenkette als Trenner verwendet.

yyyymmdd() - Liefere formatiertes Datum

Synopsis

$str = $ti->yyyymmdd;
$str = $ti->yyyymmdd($sep);

Description

Liefere Datum im Format YYYY-MM-DD, wobei Tag (DD) und Monat (MM) mit führender 0 angegeben werden. Ist $sep angegeben, wird anstelle des Bindestrichs (-) die betreffende Zeichenkette als Trenner verwendet.

yyyymmddhhmmss() - Liefere formatiertes Datum+Zeit

Synopsis

$str = $ti->yyyymmddhhmmss;
$str = $ti->yyyymmddhhmmss($sep);

Alias

iso()

Description

Liefere Datum/Zeit im Format "YYYY-MM-DDXHH:MI:SS", wobei X das Trennzeichen zwischen Datum und Uhrzeit ist. Der Aufruf ist äquvalent zu

$str = $ti->yyyymmdd.$sep.$ti->hhmmss;

Ist $sep nicht angegeben, wird ein Leerzeichen als Trenner genommen.

yyyymmddhhmm() - Liefere formatiertes Datum + Stunde + Minute

Synopsis

$str = $ti->yyyymmddhhmm;
$str = $ti->yyyymmddhhmm($sep);

Description

Liefere Datum/Zeit im Format "YYYY-MM-DDXHH:MI", wobei X das Trennzeichen zwischen Datum und Uhrzeit ist. Der Aufruf ist äquvalent zu

$str = $ti->yyyymmdd.$sep.$ti->hhmm;

Ist $sep nicht angegeben, wird ein Leerzeichen als Trenner genommen.

yyyymmddxhhmmss() - Liefere formatiertes Datum+Zeit mit +-Trenner

Synopsis

$str = $ti->yyyymmddxhhmmss;

Description

Liefere Datum/Zeit im Format "YYYY-MM-DD+HH:MI:SS". Der Aufruf ist äquvalent zu

$str = $ti->yyyymmddhhmmss('+');

Zeitarithmetik

add() - Addiere Zeitkomponenten

Synopsis

$ti = $ti->add($n1,$unit1,$n2,$unit2,...);

Description

Addiere die angegebenen Zeitkomponenten ($nI, $unitI) für Jahr (Y), Monat (M) oder Tag (D) zur Zeit hinzu und liefere das modifizierte Zeitobjekt zurück. Die $nI sind ganze Zahlen, können also auch negativ sein.

Example

$ti = Quiq::Time->new(2005,12,28,22,56,37);
$ti->add(3,'Y',5,'M',-1,'D');
==>
2009-05-27-22-56-37

addYears() - Addiere n Jahre

Synopsis

$ti = $ti->addYears($n);

Description

Addiere $n Jahre zum Zeitobjekt hinzu ($n ist eine ganze Zahl, kann also auch negativ sein) und liefere das modifizierte Zeitobjekt zurück.

Example

  • Jahre hinzuaddieren

    $ti = Quiq::Time->new(2005,12,28,22,56,37);
    $ti->addYears(5);
    ==>
    2010-12-28-00-00-00
  • Jahre abziehen

    $ti = Quiq::Time->new(2005,12,28,22,56,37);
    $ti->addYears(-6);
    ==>
    1999-12-28-00-00-00

addMonths() - Addiere n Monate

Synopsis

$ti = $ti->addMonths($n);

Description

Addiere $n Monate zum Zeitobjekt hinzu ($n ist eine ganze Zahl, kann also auch negativ sein) und liefere das modifizierte Zeitobjekt zurück.

addDays() - Addiere n Tage

Synopsis

$ti = $ti->addDays($n);

Description

Addiere $n Tage zum Zeitobjekt hinzu ($n ist eine ganze Zahl, kann also auch negativ sein) und liefere das modifizierte Zeitobjekt zurück.

addHours() - Addiere n Stunden

Synopsis

$ti = $ti->addHours($n);

Description

Addiere $n Stunden zum Zeitobjekt hinzu ($n ist eine ganze Zahl, kann also auch negativ sein) und liefere das modifizierte Zeitobjekt zurück.

addMinutes() - Addiere n Minuten

Synopsis

$ti = $ti->addMinutes($n);

Description

Addiere $n Minuten zum Zeitobjekt hinzu ($n ist eine ganze Zahl, kann also auch negativ sein) und liefere das modifizierte Zeitobjekt zurück.

addSeconds() - Addiere n Sekunden

Synopsis

$ti = $ti->addSeconds($n);

Description

Addiere $n Sekunden zum Zeitobjekt hinzu ($n ist eine ganze Zahl, kann also auch negativ sein) und liefere das modifizierte Zeitobjekt zurück.

Vergleich von Zeiten

equal() - Prüfe auf Gleichheit

Synopsis

$bool = $ti1->equal($ti2);

Description

Liefere "wahr", wenn der Zeitpunkt $ti1 gleich dem Zeitpunkt $ti2 ist, andernfalls "falsch".

less() - Prüfe auf kleiner

Synopsis

$bool = $ti1->less($ti2);

Description

Liefere "wahr", wenn der Zeitpunkt $ti1 vor dem Zeitpunkt $ti2 liegt, andernfalls "falsch".

lessOrEqual() - Prüfe auf kleinergleich

Synopsis

$bool = $ti1->lessOrEqual($ti2);

Description

Liefere "wahr", wenn der Zeitpunkt $ti1 vor oder gleich dem Zeitpunkt $ti2 ist, andernfalls "falsch".

Zeitdifferenz

diff() - Differenz zweier Zeiten

Synopsis

$dur = $ti1->diff($ti2);

Description

Bilde die Differenz zweier Zeit-Objekte $ti2-$ti1 und liefere ein Zeitdauer-Objekt $dur zurück.

Dauer in Sekunden:

$sec = $dur->asSeconds;

Dauer als Zeichenkette (DdHhMmS.Xs):

$str = $dur->asString;

Konvertierung (Klassenmethoden)

monthAbbrToNum() - Liefere Monatsnummer zu Monats-Abkürzung

Synopsis

$n = $class->monthAbbrToNum($abbr);
$n = $class->monthAbbrToNum($abbr,$lang);

Description

Liefere Monatsnummer (1, ..., 12) zur Monatsabkürzung der Sprache $lang. Default für $lang ist 'en'.

VERSION

1.220

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2024 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.