Stel de tijdzone van een datum in Java in

1. Overzicht

In deze korte handleiding zullen we zien hoe u de tijdzone van een datum instelt met Java 7, Java 8 en de Joda-Time-bibliotheek.

2. Java 8 gebruiken

Java 8 introduceerde een nieuwe Date-Time API voor het werken met datums en tijden die grotendeels gebaseerd was op de Joda-Time-bibliotheek.

De Onmiddellijk class van Java Date Time API modelleert een enkel momentaan punt op de tijdlijn in UTC. Dit vertegenwoordigt de telling van nanoseconden sinds het tijdperk van het eerste moment van 1970 UTC.

Eerst krijgen we de stroom Onmiddellijk van de systeemklok en ZoneId voor de naam van een tijdzone:

Instant nowUtc = Instant.now (); ZoneId asiaSingapore = ZoneId.of ("Azië / Singapore");

eindelijk, de ZoneId en Onmiddellijk kan worden gebruikt om een ​​datum-tijdobject met tijdzonedetails te maken. De ZonedDateTime class staat voor een datum-tijd met een tijdzone in het ISO-8601 kalendersysteem:

ZonedDateTime nowAsiaSingapore = ZonedDateTime.ofInstant (nowUtc, asiaSingapore);

We hebben Java 8's gebruikt ZonedDateTime om een ​​datum-tijd weer te geven met een tijdzone.

3. Java 7 gebruiken

In Java 7 is het instellen van de tijdzone een beetje lastig. De Datum class (die een specifiek moment in de tijd vertegenwoordigt) bevat geen tijdzone-informatie.

Laten we eerst de huidige UTC-datum en een Tijdzone voorwerp:

Date nowUtc = nieuwe datum (); TimeZone asiaSingapore = TimeZone.getTimeZone (timeZone);

In Java 7 moeten we de Kalender klasse om een ​​datum met een tijdzone weer te geven.

Ten slotte kunnen we een nowUtc Calendar met de asiaSingapore TimeZone en stel de tijd in:

Kalender nowAsiaSingapore = Calendar.getInstance (asiaSingapore); nowAsiaSingapore.setTime (nowUtc);

Het wordt aanbevolen om de Java 7-datumtijd-API te vermijden in plaats van de Java 8-datumtijd-API of de Joda-Time-bibliotheek.

4. Joda-Time gebruiken

Als Java 8 geen optie is, we kunnen nog steeds hetzelfde soort resultaat krijgen van Joda-Time, een de-facto standaard voor datum-tijdbewerkingen in de wereld van vóór Java 8.

Eerst moeten we de Joda-Time-afhankelijkheid toevoegen aan pom.xml:

 joda-tijd joda-tijd 2.10 

Om een ​​exact punt op de tijdlijn weer te geven, kunnen we gebruiken Onmiddellijk van org.joda.time pakket. Intern bevat de klasse één stuk gegevens, het moment in milliseconden vanaf het Java-tijdperk van 1970-01-01T00: 00: 00Z:

Instant nowUtc = Instant.now ();

We zullen gebruiken DateTimeZone om een ​​tijdzone weer te geven (voor de opgegeven tijdzone-id):

DateTimeZone asiaSingapore = DateTimeZone.forID ("Azië / Singapore");

Nu de nowUtc tijd wordt geconverteerd naar een Datum Tijd object met behulp van de tijdzone-informatie:

DateTime nowAsiaSingapore = nowUtc.toDateTime (asiaSingapore);

Dit is hoe Joda-time API kan worden gebruikt om datum- en tijdzone-informatie te combineren.

5. Conclusie

In dit artikel hebben we ontdekt hoe u de tijdzone in Java instelt met behulp van Java 7, 8 en Joda-Time API. Voor meer informatie over de datum-tijdondersteuning van Java 8 kunt u onze Java 8-datum-tijdintro raadplegen.

Zoals altijd is het codefragment beschikbaar in de GitHub-repository.