Octave w obliczeniach – dane typu data i czas

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


Podobne wpisy