1. Java
8
Date
&
Time
API
Speaker:
Oleg
Tsal-‐Tsalko(@tsaltsol)
2. About
me
Oleg
Tsal-‐Tsalko
Lead
So:ware
Engineer
at
EPAM
Systems.
Speaker,
acEve
member
of
Kiev
JUG.
ParEcipate
in
different
educaEonal
iniEaEves
and
JCP/AdoptJSR
programs.
3. Benefits
• JSR-‐310:
New
Date
&
Time
API
• Replaces
old
ambiguous
java.uEl.Date,
Calendar,
TimeZone,
DateFormat
classes
• More
fluent/simple/clean
API
• Immutable
classes
• Using
Java8
features
including
lambdas
• Precise
separaEon
of
concepts
4. Range
of
types
• LocalDate
–
a
date
only
• LocalTime
–
a
Eme
only
• LocalDateTime
–
date
with
Eme
• ZonedDateTime
–
date
with
Eme
in
Eme
zone
• Period
-‐
date-‐based
amount
of
Eme
• Dura>on
-‐
Eme-‐based
amount
of
Eme
• And
more…
5. TimeZones
If
you
can
avoid
using
TimeZones
–
do
it!
If
not
–
use
ZonedDateAndTime!
6. TimeZone
classes
in
Java
8
• ZoneId
–
replacement
for
TimeZone
class
(e.g.
“Europe/London”,
“Europe/Kiev”)
• ZoneOffset
–
represenEng
offset
from
UTC
Eme
• ZoneRules
–
behind
the
scenes
class
which
defines
Eme
zone
rules
• ZonedDateTime
–
main
date/Eme
class
which
is
aware
of
Eme
zones
7. Power
of
abstracEon
New
API
is
very
flexible
because
it
based
on
number
of
abstracEons
at
it’s
boeom:
• Temporal
–
parent
class
for
all
date/Eme
objects
which
defines
mutaEon
operaEon
for
them
such
as
plus/
minus/with
• TemporalAdjuster
–
funcEonal
interface
which
responsible
for
mutaEng
Temporal
objects
• TemporalField
–
represents
parts/fields
of
date/Eme
objects
such
as
(DAY_OF_WEEK,
MONTH,
etc.)
• TemporalUnit
–
represents
type
of
date/Eme
values
such
as
(MINUTES,
DAYS,
YEARS,
etc.)
• TemporalAmount
–
class
which
represents
amount
of
Eme