Java:
Beregning av en dato i fremtiden eller fortiden
Hvordan gjøre det:
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class DateCalculator {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
LocalDate futureDate = today.plusWeeks(2);
LocalDate pastDate = today.minusDays(30);
System.out.println("I dag: " + today);
System.out.println("Dato 2 uker fra nå: " + futureDate);
System.out.println("Dato 30 dager siden: " + pastDate);
}
}
Eksempelutdata:
I dag: 2023-04-01
Dato 2 uker fra nå: 2023-04-15
Dato 30 dager siden: 2023-03-02
Dyp Dykk
Før Java 8, brukte utviklere java.util.Date
og java.util.Calendar
for dato- og tidsmanipulasjoner, men de var klønete og ikke trådsikre. Java 8 introduserte java.time
-pakken med LocalDate
, LocalTime
, og LocalDateTime
. Disse klassene er uforanderlige og trådsikre, noe som gjør dato- og tidsberegninger enklere og sikrere. Du kan også bruke plus
og minus
-metoder med TemporalUnit
for å spesifisere enheten, eller plusPeriod
og minusDuration
for større presisjon.
Alternativene til Java’s innebygde biblioteker inkluderer Joda-Time og Apache Commons Lang. Før java.time
, var Joda-Time det foretrukne valget på grunn av sin robusthet og brukervennlighet, men nå har mange av dens funksjoner blitt inkorporert i standard Java-biblioteket.
Når det kommer til implementasjonsdetaljer, bør utviklere være oppmerksomme på tidszonehåndtering. LocalDate
og dens søsterklasser (LocalTime
, LocalDateTime
) håndterer ikke tidssoner, mens ZonedDateTime
tar hensyn til tidssonene når du utfører dato- og tidsberegninger.
Se Også
- Java Dokumentasjon for LocalDate: https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html
- Java Dokumentasjon for ChronoUnit: https://docs.oracle.com/javase/8/docs/api/java/time/temporal/ChronoUnit.html
- Joda-Time Hjemmeside: https://www.joda.org/joda-time/
- Apache Commons Lang: https://commons.apache.org/proper/commons-lang/