Java:
Kahden päivämäärän vertailu
How to: (Kuinka tehdä:)
import java.time.LocalDate;
import java.time.Period;
public class DateComparison {
public static void main(String[] args) {
LocalDate date1 = LocalDate.of(2023, 4, 1);
LocalDate date2 = LocalDate.now();
// Tarkistetaan kumpi päivämäärä on aikaisempi
if (date1.isBefore(date2)) {
System.out.println("Date1 on ennen Date2:ta");
} else if (date1.isAfter(date2)) {
System.out.println("Date1 on myöhemmin kuin Date2");
} else {
System.out.println("Päivämäärät ovat samat");
}
// Lasketaan päivämäärien välinen ero
Period period = Period.between(date1, date2);
System.out.println("Ero on " + period.getYears() + " vuotta, " +
period.getMonths() + " kuukautta ja " +
period.getDays() + " päivää.");
}
}
Esimerkkitulostus:
Date1 on ennen Date2:ta
Ero on 0 vuotta, 1 kuukautta ja 15 päivää.
Deep Dive (Syväsukellus):
Päivämäärien vertailu on ollut osa Javaa alusta lähtien. Aluksi käytettiin java.util.Date
-luokkaa, mutta se oli hankala käyttää eikä turvallinen monisäikeisessä ympäristössä.
Java 8 toi java.time
-paketin, joka korjasi vanhat ongelmat. LocalDate
, LocalTime
ja LocalDateTime
ovat nyt standardi ajanhallintaan. Nämä luokat ovat immutaabeleja ja thread-safeja, mikä tekee niistä erinomaisia moderniin Java-ohjelmointiin.
Java 8 myös esitteli Period
- ja Duration
-luokat ajanjaksojen vertailuun. Period
mittaa päivämääräerän vuosina, kuukausina ja päivinä, kun taas Duration
mittaa ajan tunteina, minuutteina ja sekunteina.
Muita valinnaisia kirjastoja on olemassa, kuten Joda-Time, mutta java.time
on nykyään suositeltavin valinta.
See Also (Katso myös):
- Oracle Java Documentation on
java.time
package: https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html - Baeldung on
Date
vs.LocalDate
: https://www.baeldung.com/java-8-date-time-intro