W Joda-Time 2 jaka jest różnica między tymi trzema rodzajami przedziałów czasowych:
W Joda-Time 2 jaka jest różnica między tymi trzema rodzajami przedziałów czasowych:
Odpowiedzi:
Potrzebne są 3 klasy, ponieważ reprezentują one różne koncepcje, więc kwestią jest wybranie odpowiedniej dla zadania, a nie względnej wydajności. Z dokumentacji z komentarzami dodanymi przeze mnie kursywą :
Przerwa w Joda-Time reprezentuje przedział czasu od jednej milisekundy chwilę do innej chwili. Oba instancje są w pełni określonymi instancjami w kontinuum datetime, wraz ze strefą czasową. Określono określone godziny, np. Może to być przedział między 20: 00: 00GMT wczoraj a 09: 00: 00GMT dziś rano.
Czas w Joda-Time reprezentuje okres czasu, mierzony w milisekundach. Czas trwania jest często uzyskiwany z przedziału. tzn. możemy odjąć początek od końca przedziału, aby uzyskać czas trwania
Okres w Joda-Time reprezentuje okres czasu zdefiniowany w zakresie dziedzin, na przykład, 3 lata i 5 miesięcy 2 dni i 7 godzin. Różni się on od czasu trwania tym, że jest niedokładny pod względem milisekund. Kropkę można rozwiązać tylko do dokładnej liczby milisekund, określając moment (w tym chronologię i strefę czasową), do której się odnosi. np. rozważmy okres 1 roku, jeśli dodamy to do 1 stycznia, zawsze dotrzemy do następnego 1 stycznia, ale czas trwania będzie zależeć od tego, czy rok pośredni jest rokiem przestępnym, czy nie. Podobnie, jeśli dodamy 1 miesiąc do 1. miesiąca, dotrzemy do 1. dnia następnego miesiąca, ale czas trwania (w milisekundach) będzie się różnić w zależności od danego miesiąca
W przypadku pytania 3 konkretna metoda podziału czasu trwania nie jest tak naprawdę potrzebna, ponieważ zawsze możemy uzyskać liczbę milisekund z czasu trwania jako long
(za pomocą getMillis()
), podzielić go i skonstruować nowy czas trwania (za pomocą new Duration(long duration)
).
Dzielenie kropki tak naprawdę nie ma rzeczywistego znaczenia na podstawie powyższej definicji okresu. np. co to jest pół miesiąca? (jego długość zależy od miesiąca).
Aby dodać do odpowiedzi mikej :
Joda-Time czas jest „fizyczne” przedział czasu; na przykład:
12000 milliseconds
<- jest to czas trwania
Przedział czasu Joda to w rzeczywistości para chwil (początek natychmiastowy - koniec natychmiastowy). Natychmiastowy jest, znowu, „fizyczne” koncepcji, punkt na osi czasu. Np. (Tylko możliwy zapis):
(2010/3/3 19:00:00.000 UTC ; 2010/3/3 20:00:00.000 UTC)
<- to jest interwał
Odstęp , a następnie, można przeprowadzić w czasie , ale nie na odwrót.
Rozważ te dwa przedziały:
I1=(2010/3/3 19:00:00.000 UTC ; 2010/3/3 20:00:00.000 UTC)
I2=(2010/3/3 21:00:00.000 UTC ; 2010/3/3 22:00:00.000 UTC)
Jako przedziały I1
i I2
są różne, ponieważ punkty końcowe są różne; ale jeśli przekonwertować je do trwania, mam to samo: 3600000 milliseconds
.
(Analogia matematyczna: interwały [10,12]
i [95,97]
są różnymi interwałami , ale mają tę samą długość : „długość interwału” odwzorowuje na czas trwania ).
Wreszcie okres jest upływem „czasu cywilnego”, wyrażonego jako liczba miesięcy, dni, godzin itp. Nie reprezentuje on - sam w sobie - interwału „fizycznego”, dlatego nie można go bezpośrednio przekształcić w czas trwania (miesiące mają różne długości ...).
Odpowiada to pytanie 3: czas fizyczny (czas trwania) można podzielić tylko na dwa.
Period
. Propozycja ujednolicenia takiej terminologii została podniesiona, ale nie została jeszcze zrealizowana.