Niniejsza prezentacja wybranych funkcji Octave’a związanych z datą i czasem nie stanowi kompletnego omówienia tego zagadnienia.
Funkcje date() i clock()
Na zajęciach z przedmiotu Technologie informacyjne (kierunek Budownictwo UWM w Olsztynie) prezentowano Państwu dwie funkcje zwracające informacje o dacie i czasie. Pierwsza z tych funkcji to date(), druga to clock(). Sposób użycia tych funkcji przedstawiono poniżej:
>> d1 = date()
d1 = 14-Oct-2024
>> class(d1)
ans = char % Zmienna d1 jest zmienną tekstową
>> d2 = clock()
d2 = 2.0240e+03 1.0000e+01 1.4000e+01 6.0000e+00 5.8000e+01 7.9492e+00
>> class(d2)
ans = double % Zmienna d2 jest wektorem liczbowym
>> rok = d2(1)
rok = 2024
>> miesiac = d2(2)
miesiac = 10
>> dzien = d2(3)
dzien = 14
Funkcja now()
Prezentowana funkcja zwraca informację o bieżącej dacie i godzinie w postaci liczby rzeczywistej, której część całkowita ( floor(now) ) to liczba dni pomiędzy dniem dzisiejszym a dniem 1 stycznia 0000 r. Część ułamkowa ( rem(now,1) ) tej liczby to aktualny czas.
Sposób użycia tej funkcji zaprezentowano poniżej.
>> teraz = now()
teraz = 739539.2912812398
>> data = floor(teraz)
data = 739539
>> czas = rem(teraz,data)
czas = 0.2912812398
Funkcje datestr() i datenum()
Funkcja datestr() operująca na liczbie rzeczywistej, reprezentującej datę i czas (takiej, jaką zwraca np. funkcja now() )służy do konwersji tej nieczytelnej dla człowieka informacji na ustalony format daty i czasu.
Składnia tej funkcji to STR = datestr (DATE, F). DATE to właśnie liczba daty, zaś parametr F to format, określający postać daty i czasu zwracanej przez funkcję datestr(). Informacje o formatowaniu daty i czasu w funkcji datestr() dostępne są w dedykowanej dokumentacji Octave’a.
Sposób użycia funkcji zaprezentowano poniżej.
teraz = now()
teraz = 739534.4174345008
>> data = datestr(teraz, 'dd/mm/yyyy')
data = 09/10/2024
>> czas = datestr(teraz, 'HH:MM')
czas = 10:01
>> data_czas = datestr(teraz, 'dd/mm/yyyy HH:MM')
data_czas = 09/10/2024 10:01
Funkcja datenum() operująca na zmiennej tekstowej ( na przykład zwracanej przez funkcję date() ) konwertuje tę zmienną na liczbę daty. Możliwe jest tu również wskazanie formatu zamieszczonej daty. Składnia tej funkcji jest następująca: liczbaDaty = datenum („datestr”, F). „datestr” to tekst zawierający datę/czas, zaś parametr F to format, określający postać daty i czasu parametru „datestr”.
Informacje o formatowaniu daty i czasu w funkcji datenum() dostępne są w dedykowanej dokumentacji Octave’a.
Sposób użycia funkcji zaprezentowano poniżej.
teraz = now()
teraz = 739534.4174345008
>> data_czas = datestr(teraz, 'dd/mm/yyyy HH:MM')
data_czas = 09/10/2024 10:01
>> data_num = datenum(data_czas,'dd/mm/yyyy HH:MM')
data_num = 739534.4174345008
Przykład
Mamy dwie ekipy wykonujące równolegle określone zadania. Ich praca rozpoczęła się 4 października 2026r o godzinie 16:45. Pierwsza ekipa ma zakończyć swoją pracę 4 listopada 2026r o godzinie 15:18. druga ekipa ma zakończyć swoją pracę 4 listopada 2026r o godzinie 19:23. Ile pełnych dni oraz pełnych godzin trwa działalność każdej z ekip?
>> data_start = '04-10-2026 16:45' % Początek pracy każdej z ekip
data_start = 04-10-2026 16:45
>> data_stop = '04-11-2026 15:18' % Planowany koniec pracy pierwszej ekipy
data_stop = 04-11-2026 15:18
>> data_stop2 = '04-11-2026 19:23' % Planowany koniec pracy drugiej ekipy
data_stop2 = 04-11-2026 19:23
>> data_start_num = datenum(data_start, 'dd-mm-yyyy HH:MM') % Liczba określająca datę początku pracy obu ekip
% (liczbę dni od 1-01-0000r)
data_start_num = 7.4026e+05
>> data_stop_num = datenum(data_stop, 'dd-mm-yyyy HH:MM') % Liczba określająca datę końca pracy pierwszej ekipy
data_stop_num = 7.4029e+05
>> data_stop2_num = datenum(data_stop2, 'dd-mm-yyyy HH:MM') % Liczba określająca datę końca pracy drugiej ekipy
data_stop2_num = 7.4029e+05
>> ile_dni = floor(data_stop_num - data_start_num) % Liczba pełnych dni trwania pracy pierwszej ekipy
ile_dni = 30
>> ile_dni2 = floor(data_stop2_num - data_start_num) % Liczba pełnych dni trwania pracy drugiej ekipy
ile_dni = 31
>> ile_godzin = floor((data_stop_num - data_start_num) * 24) % Liczba pełnych godzin trwania pracy pierwszej ekipy
ile_godzin = 742
>> ile_godzin = floor((data_stop2_num - data_start_num) * 24) % Liczba pełnych godzin trwania pracy drugiej ekipy
ile_godzin = 746