Pour mémoire: j'ai emprunté le titre à Cicero, à Oratio à Catilinam Prima à Senatu Habita .
Dans la vraie vie, nous avons souvent affaire à des intervalles de temps. Rendez-vous chez le dentiste, réservation de chambre d'hôtel, même votre pause déjeuner quotidienne: la planification de tout cela est la tâche d'ajuster la plage horaire à un certain nombre d'autres plages horaires.
, . , 1 . . . , — , — , , , — .
, . , . , ?
, . , , .
, Tempus
!
, — Slot
. : , from
to
, DateTime
. Slots
, AVLTree
. , ( ) . , , .
Slots.add/2
— , . , . Slots.merge/2
. , , , , .
Slot
: ( ), , . .
Tempus
, . , ; , , , , , .
:
slots =
[
Tempus.Slot.wrap(~D|2020-08-07|), # whole day
%Tempus.Slot{
from: ~U|2020-08-08 01:01:00Z|, # one minute
to: ~U|2020-08-08 01:02:00Z|
},
%Tempus.Slot{
from: ~U|2020-08-08 01:03:00Z|, # one minute
to: ~U|2020-08-08 01:04:00Z|
}
]
|> Enum.into(%Tempus.Slots{})
0
, , .
Tempus.add(slots, ~U|2020-08-08 01:01:30Z|, 0, :second)
#⇒ ~U[2020-08-08 01:02:00Z]
70 , — ~U[2020-08-08 01:00:55Z]
— DateTime
(5sec + + 60sec + + 5sec
):
Tempus.add(slots, ~U|2020-08-08 01:00:55Z|, 70, :second)
#⇒ ~U[2020-08-08 01:04:05Z]
. , .
Slots.merge/2
Stream
. , . , , , , , .
, Slots
/ Slot
— (, ).
?
, , .
!