Stronę tą wyświetlono już: 5895 razy
Klasa QDateTime umożliwia przechowywanie daty i czasu jak również przetwarzanie jej. Aby jednak było to możliwe konieczne jest załączenie pliku QDateTime.
Metody statyczne
Klasa QDateTime dysponuje następującymi metodami statycznymi:
- currentDateTime - zwraca obiekt klasy QDateTime zawierający bieżącą datę i czas;
- currentDateTimeUtc - zwraca obiekt klasy QDateTime zawierający bieżącą datę i czas UTC;
- currentMSecsSinceEpoch - zwraca liczbę milisekund, jakie upłynęły od 1970-01-01 00:00:00 w czasie UTC;
- currentSecsSinceEpoch - zwraca liczbę milisekund, jakie upłynęły od 1970-01-01 00:00:00 do teraz;
- fromMSecsSinceEpoch - tworzy obiekt klasy QDateTime na podstawie liczby milisekund, jakie upłynęły od 1970-01-01 00:00:00 w wybranej strefie czasowej;
- fromSecsSinceEpoch - tworzy obiekt klasy QDateTime na podstawie liczby sekund, jakie upłynęły od 1970-01-01 00:00:00 w wybranej strefie czasowej;
- fromString - tworzy obiekt klasy QDateTime na podstawie tekstu i podanego formatowania
Konstruktory klasy QDateTime
Klasa QDateTime oprócz standardowego konstruktora bezparametrowego, konstruktora kopiującego i przenoszącego udostępnia konstruktory, które mogą przyjmować jako parametry obiekty klas QDate oraz QTime, które omawiałem już wcześniej na stronach Programowanie → Qt Creator konsola → Qt - przetwarzanie dat czyli klasa QDate i Programowanie → Qt Creator konsola → Qt - odmierzanie czasu czyli klasa QTime. Oto przykład zastosowania tych konstruktorów:
Wynik działania powyższego kodu:
QDateTime(2003-01-01 10:20:30.000 środkowoeuropejski czas stand. Qt::TimeSpec(TimeZone) Europe/Warsaw) QDateTime(2003-01-01 10:20:30.000 UTC Qt::TimeSpec(UTC)) QDateTime(2003-01-01 11:20:30.000 środkowoeuropejski czas stand. Qt::TimeSpec(LocalTime)) QDateTime(2003-01-01 10:20:30.000 środkowoeuropejski czas stand. Qt::TimeSpec(LocalTime)) QDateTime(2003-01-01 10:20:30.000 My private time zone! Qt::TimeSpec(TimeZone) my time zone) QDateTime(2003-01-01 08:20:30.000 środkowoeuropejski czas stand. Qt::TimeSpec(LocalTime)) QDateTime(2003-01-01 10:20:30.000 Rosja (czas standardowy) Qt::TimeSpec(TimeZone) Europe/Moscow)
Metody zwracające datę i czas
Jeżeli zachodzi konieczność uzyskania dostępu do samej daty obiektu klasy QDateTime lub czasu, to metody date (zwracająca obiekt klasy QDate) i time (zwracająca obiekt klasy QTime są do tego celu stworzone.
Dodawanie milisekund, sekund, dni, miesięcy lub lat do bieżącej daty
Oto lista metod umożliwiających dodawanie milisekund, sekund, dni, miesięcy lub lat do bieżącej daty:
- addMSec - dodawanie milisekund;
- addSec - dodawanie sekund;
- addDays - dodawanie dni;
- addMonths - dodawanie miesięcy;
- addYears - dodawanie lat
Obliczanie odstępu czasu pomiędzy dwiema datami
Istnieją trzy metody do obliczania odstępu czasu pomiędzy dwoma obiektami klasy QDateTime:
- daysTo - zwraca liczbę dni dzielących dwie daty;
- secsTo - zwraca liczbę sekund dzielących dwie daty;
- msecsTo - zwraca liczbę milisekund dzielących dwie daty;
Oto przykład użycia powyższych metod:
Wynik działania powyższego kodu:
Dni: 3288 Sekundy: 284082174 Milisekundy 284082174000
Ustawianie daty i czasu
Istnieje możliwość ustawienia daty i czasu obiektu klasy QDateTime po jego utworzeniu za pomocą metod:
- setDate - ustawia datę;
- setTime - ustawia czas
Ustawienie specyfikacji czasu oraz jej pobieranie
Specyfikacja czasu może być ustawiona na Qt::UTC lub Qt::LocalTime. Metodą zwracającą ustawienia jest timeSpec, natomiast ustawiającą jest setTimeSpec.
Pobieranie i ustawianie strefy czasowej
Metoda timeZone zwraca obiekt klasy QTimeZone, który zawiera opis ustawionej strefy czasowej. Możliwe jest też zmienienie ustawień strefy czasowej za pomocą metody setTimeZone, która z kolei przyjmuje jako argument obiekt klasy QTimeZone.
Wynik działania powyższego kodu:
QTimeZone("Europe/Warsaw") QDateTime(2003-01-01 10:20:30.000 środkowoeuropejski czas stand. Qt::TimeSpec(LocalTime)) QTimeZone("Europe/Paris") QDateTime(2003-01-01 10:20:30.000 Romański czas standardowy Qt::TimeSpec(TimeZone) Europe/Paris)
Metody konwertujące czas do innej strefy czasowej
Istnieje wiele różnych wariantów metod umożliwiających przeliczenie przechowywanego w obiekcie klasy QDateTime czasu i daty na czas i datę innej strefy czasowej. Oto lista takich metod:
- toLocalTime - przelicza do lokalnego czasu, z jakiego korzysta system;
- toOffsetFromUtc - przelicza do czasu UTC z uwzględnieniem podanego w sekundach przesunięcia;
- toTimeSpec - przelicza według podanej specyfikacji;
- toTimeZone - przelicza do opisanej strefy czasowej przez podany jako argument tej metody obiekt klasy QTimeZone;
- toUTC - przelicza do czasu UTC
Zamiana daty na liczbę sekund lub milisekund
Istnieją dwie metody, które zwracają liczbę sekund lub milisekund jakie upłynęły od 1970-01-01T00:00:00.000. Metodami tymi są:
- toMSecsSinceEpoch;
- toSecsSinceEpoch
Zamiana dwóch obiektów klas QDateTime miejscami
Metoda swapswap zamienia wartości dat i czasów przechowywanych przez dwa obiekty klasy QDateTime.
Porównywanie dwóch obiektów klasy QDateTime
Klasa QDateTime obsługuje wszystkie operatory porównania obiektów QDateTime.
Zamiana daty i czasu na tekst
Oto jak za pomocą metody toString można uzyskać datę w postaci tekstu:
Wynik działania powyższego kodu:
"2003-01-01 10-20-30" "2003-sty-01 (śr) 10-20-30" "2003-stycze˝-01 (środa) 10-20-30"