Obsługa stref czasowych
Część sekcji Logika i przepływ sterowania ścieżki Java w Coddy. Lekcja 59 z 59.
ZonedDateTime w Javie reprezentuje datę i godzinę wraz ze strefą czasową. Przydaje się podczas pracy z różnymi strefami czasowymi lub konwertowania między nimi.
Utwórz czas w określonej strefie:
ZonedDateTime tokyo = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));Możesz również utworzyć ZonedDateTime z LocalDateTime za pomocą .atZone():
LocalDateTime localDT = LocalDateTime.of(2024, 3, 15, 10, 30);
ZonedDateTime tokyo = localDT.atZone(ZoneId.of("Asia/Tokyo"));Konwertuj czas między strefami:
ZonedDateTime newYork = tokyo.withZoneSameInstant(ZoneId.of("America/New_York"));Po wykonaniu powyższego kodu newYork zawiera ten sam moment co tokyo, ale w strefie czasowej Nowego Jorku:
2024-03-15T10:30-04:00[America/New_York]
// Przykładowy wynikAby sformatować ZonedDateTime, użyj DateTimeFormatter. Dodaj przesunięcie za pomocą wzorca xxx: wyświetla on +09:00 lub -04:00, a zerowe przesunięcie jako +00:00 (wielkie litery w XXX powodują, że zerowe przesunięcie jest wyświetlane jako Z):
// Bez przesunięcia strefy czasowej
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
// Z przesunięciem strefy czasowej (np. +09:00 lub -04:00)
DateTimeFormatter fmtWithOffset = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm xxx");
String result = newYork.format(fmtWithOffset);
// Przykład: 2024-03-15 10:30 -04:00Wyzwanie
ŁatwyUtwórz metodę o nazwie convertTime, która przyjmuje cztery argumenty:
- String (
dateTimeStr) w formacie "yyyy-MM-dd HH:mm" - String (
sourceZone) — identyfikator źródłowej strefy czasowej - String (
targetZone) — identyfikator docelowej strefy czasowej - boolean (
showOffset) określający, czy uwzględnić przesunięcie strefy czasowej w wyniku
Metoda powinna:
- Parsować wejściową datę i godzinę w źródłowej strefie czasowej
- Konwertować je na docelową strefę czasową
- Zwracać sformatowane informacje o obu godzinach
Zwracane komunikaty powinny być następujące:
- Jeśli data i godzina są nieprawidłowe: zwróć "Invalid datetime format"
- Jeśli strefa jest nieprawidłowa: zwróć "Invalid time zone"
- Jeśli showOffset ma wartość true: uwzględnij przesunięcie w wyniku, sformatowane wzorcem
xxx, tak aby przesunięcie równe zero było wyświetlane jako+00:00 - Format: "Source: [time1], Target: [time2]"
Spróbuj swoich sił
import java.util.Scanner;
import java.time.*;
import java.time.format.*;
public class Main {
public static String convertTime(String dateTimeStr, String sourceZone,
String targetZone, boolean showOffset) {
// Napisz tutaj swój kod
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String dateTimeStr = scanner.nextLine();
String sourceZone = scanner.nextLine();
String targetZone = scanner.nextLine();
boolean showOffset = Boolean.parseBoolean(scanner.nextLine());
System.out.println(convertTime(dateTimeStr, sourceZone, targetZone, showOffset));
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DDodawanie i odejmowanie macierzyTablice postrzępioneTablice 3D i większeTypowe wzorce dla tablic 2DPodsumowanie — wszystko o tablicach4HashSet — część 1
Czym jest HashSet?Dodawanie elementuUsuwanie elementuSprawdzanie, czy element istniejePusty i rozmiarCzyszczenie i klonowaniePodsumowanie — HashSet10Data i czas
Podstawy LocalDateOperacje na LocalTimeZastosowanie LocalDateTimePeriod i DurationFormatowanie datObsługa stref czasowych2HashMap część 1
Czym jest HashMap?Deklarowanie HashMapDostęp do wartościSprawdzanie, czy klucz istniejeModyfikowanie słownikówPodsumowanie — HashMap3HashMap — część 2
Metody HashMapIterowanie za pomocą keySet()Iterowanie za pomocą entrySet()Zagnieżdżona HashMapPowtórka — zarządzanie magazynemPowtórka — operacje na HashMap6Zaawansowany przepływ sterowania
Instrukcje etykietująceWyrażenie switchDopasowywanie wzorcówKlauzule ochronnePowtórzenie — przepływ sterowania9Projekt — licznik unikalnych słów
Wprowadzanie i przechowywanie tekstuPrzetwarzanie słówPoćwicz samodzielnie: Kompilator Java online