Penanganan Zona Waktu
Termasuk bagian Logika & Alur dalam perjalanan Java di Coddy. Pelajaran 59 dari 59.
ZonedDateTime di Java merepresentasikan tanggal dan waktu dengan zona waktu. Ini berguna saat bekerja dengan zona waktu yang berbeda atau mengonversi di antara zona waktu tersebut.
Buat waktu di zona tertentu:
ZonedDateTime tokyo = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));Kamu juga bisa membuat ZonedDateTime dari LocalDateTime menggunakan .atZone():
LocalDateTime localDT = LocalDateTime.of(2024, 3, 15, 10, 30);
ZonedDateTime tokyo = localDT.atZone(ZoneId.of("Asia/Tokyo"));Ubah waktu antar zona:
ZonedDateTime newYork = tokyo.withZoneSameInstant(ZoneId.of("America/New_York"));Setelah menjalankan kode di atas, newYork berisi saat yang sama dengan tokyo, tetapi dalam zona waktu New York:
2024-03-15T10:30-04:00[America/New_York]
// Contoh outputUntuk memformat ZonedDateTime, gunakan DateTimeFormatter. Tambahkan offset dengan pola xxx: pola ini mencetak +09:00 atau -04:00, dan offset nol sebagai +00:00 (huruf besar XXX mencetak Z untuk offset nol):
// Tanpa offset
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
// Dengan offset (misalnya +09:00 atau -04:00)
DateTimeFormatter fmtWithOffset = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm xxx");
String result = newYork.format(fmtWithOffset);
// Contoh: 2024-03-15 10:30 -04:00Tantangan
MudahBuat method bernama convertTime yang menerima empat argumen:
- Sebuah String (
dateTimeStr) dengan format "yyyy-MM-dd HH:mm" - Sebuah String (
sourceZone) ID zona waktu sumber - Sebuah String (
targetZone) ID zona waktu target - Sebuah boolean (
showOffset) yang menentukan apakah offset zona waktu disertakan dalam output
Method tersebut harus:
- Mengurai datetime input di zona waktu sumber
- Mengonversinya ke zona waktu target
- Mengembalikan informasi terformat tentang kedua waktu
Pesan yang dikembalikan harus berupa:
- Jika datetime tidak valid: kembalikan "Invalid datetime format"
- Jika zona tidak valid: kembalikan "Invalid time zone"
- Jika showOffset bernilai true: sertakan offset dalam output, dengan format pola
xxx, sehingga offset nol ditampilkan sebagai+00:00 - Format: "Source: [time1], Target: [time2]"
Coba sendiri
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) {
// Tulis kodemu di sini
}
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));
}
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika & Alur
1Array Multidimensi
Dasar Array 2DMengakses Elemen Array 2DLoop Bersarang dengan Array 2DRangkuman: Array 2DPenjumlahan dan Pengurangan MatriksArray BergerigiArray 3D dan Lebih JauhPola Umum Array 2DRangkuman: Semua tentang Array4HashSet Bagian 1
Apa itu HashSet?Menambahkan ElemenMenghapus ElemenMemeriksa Apakah Elemen AdaKosong dan UkuranMengosongkan dan MenyalinRekap: HashSet10Tanggal dan Waktu
Dasar-dasar LocalDateOperasi LocalTimePenggunaan LocalDateTimePeriod dan DurationFormat TanggalPenanganan Zona Waktu2HashMap Bagian 1
Apa itu HashMap?Deklarasikan HashMapMengakses nilaiPeriksa apakah key adaMengubah dictionaryRingkasan: HashMap3HashMap Bagian 2
Method HashMapIterasi dengan keySet()Iterasi dengan entrySet()HashMap BersarangRangkuman: Kelola GudangRangkuman: Operasi HashMap6Alur Kontrol Lanjutan
Pernyataan LabelEkspresi SwitchPencocokan PolaKlausa PenjagaRingkasan Alur Kontrol9Proyek: Penghitung Kata Unik
Input dan Penyimpanan TeksPemrosesan KataLatihan sendiri: Compiler Java online