Διαδρομές
/
Java
Java
/
Ύλη
/
Ημερομηνία και Ώρα
Ημ

Ημερομηνία και Ώρα σε Java

6 ασκήσεις

Σχετικά με την έννοια Ημερομηνία και Ώρα

Το πακέτο java.time που εισήχθη στην Java 8 περιέχει αρκετές κλάσεις για να δουλεύεις με ημερομηνίες και ώρα.

LocalDate

Η κλάση java.time.LocalDate αναπαριστά μια ημερομηνία χωρίς ζώνη ώρας στο ημερολόγιο ISO-8601, όπως 2007-12-03:

LocalDate date = LocalDate.of(2007, 12, 3);

Οι ημερομηνίες μπορούν να συγκριθούν με άλλες ημερομηνίες:

LocalDate date1 = LocalDate.of(2007, 12, 3);
LocalDate date2 = LocalDate.of(2007, 12, 4);

date1.isBefore(date2);
// => true

date1.isAfter(date2);
// => false

Ένα στιγμιότυπο LocalDate διαθέτει μεθόδους getter για να παίρνεις από αυτό τα επιμέρους μέρη της ημερομηνίας:

LocalDate date = LocalDate.of(2007, 12, 3);

date.getYear();
// => 2007

date.getMonthValue();
// => 12

date.getDayOfMonth();
// => 3

Ένα στιγμιότυπο LocalDate διαθέτει μεθόδους για να προσθέτεις χρονικές μονάδες σε αυτό.

Note

Αυτές οι μέθοδοι επιστρέφουν ένα νέο στιγμιότυπο LocalDate και δεν ενημερώνουν το υπάρχον στιγμιότυπο, καθώς η κλάση LocalDate είναι αμετάβλητη.

LocalDate date = LocalDate.of(2007, 12, 3);

date.plusDays(3);
// => 2007-12-06

date.plusMonths(1);
// => 2008-01-03

date.plusYears(1);
// => 2008-12-03

LocalDateTime

Η κλάση java.time.LocalDateTime αναπαριστά μια ημερομηνία και ώρα χωρίς ζώνη ώρας στο ημερολόγιο ISO-8601, όπως 2007-12-03T10:15:30:

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);

datetime.getYear();
// => 2007

datetime.getMonthValue();
// => 12

datetime.getDayOfMonth();
// => 3

datetime.getHours();
// => 10

datetime.getMinutes();
// => 15

datetime.getSeconds();
// => 30

Όπως και η κλάση LocalDate, ένα στιγμιότυπο LocalDateTime έχει τις ίδιες μεθόδους για σύγκριση με άλλα LocalDateTime και για προσθήκη χρονικών μονάδων σε αυτό.

Είναι επίσης δυνατό να μετατρέψεις ένα στιγμιότυπο LocalDate σε LocalDateTime:

LocalDate date = LocalDate.of(2007, 12, 3);
LocalDateTime datetime = date.atTime(10, 15, 30);
datetime.toString();
// => "2007-12-03T10:15:30"

Μορφοποίηση ημερομηνιών και ωρών

Τόσο το LocalDate όσο και το LocalDateTime χρησιμοποιούν τη συμβολική γραφή του προτύπου ISO-8601 όταν μετατρέπονται από και προς ένα String.

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);
LocalDateTime parsed = LocalDateTime.parse("2007-12-03T10:15:30");

datetime.isEqual(parsed);
// => true

Το να κάνεις parse ένα LocalDate ή LocalDateTime από ένα String σαν αυτό χρησιμοποιώντας διαφορετική μορφή δεν είναι δυνατό. Αντ' αυτού, για να μορφοποιήσεις ημερομηνίες με προσαρμοσμένη μορφή, θα πρέπει να χρησιμοποιήσεις το java.time.format.DateTimeFormatter:

DateTimeFormatter parser = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse("03/12/2007", formatter);

DateTimeFormatter printer = DateTimeFormatter.ofPattern("MMMM d, yyyy");
printer.format(date);
// => "December 3, 2007"

Μπορείς επίσης να ορίσεις ένα locale κατά τη δημιουργία της προσαρμοσμένης μορφής, ώστε να μορφοποιείς και να κάνεις parse για διαφορετικές περιοχές:

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.FRENCH).format(date);
// => décembre 3, 2007

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.of("pt")).format(date);
// => dezembro 3, 2007
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Ημερομηνία και Ώρα