Zaman Dilimi Yönetimi
Coddy'nin Java Journey'sinin Mantık & Akış bölümünün bir parçası — ders 59 / 59.
Java'daki ZonedDateTime, saat dilimiyle birlikte bir tarih ve saati temsil eder. Farklı saat dilimleriyle çalışırken veya aralarında dönüştürme yaparken kullanışlıdır.
Belirli bir zaman diliminde bir zaman oluşturun:
ZonedDateTime tokyo = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));Ayrıca bir LocalDateTime'ı ZonedDateTime'a .atZone() kullanarak dönüştürebilirsiniz:
LocalDateTime local = LocalDateTime.of(2024, 3, 15, 10, 30);
ZonedDateTime tokyo = local.atZone(ZoneId.of("Asia/Tokyo"));.atZone() mevcut bir yerel tarih-saat'e bir zaman dilimi ekleyerek bir ZonedDateTime üretir.
Zaman dilimleri arasında zamanı dönüştür:
ZonedDateTime newYork = tokyo.withZoneSameInstant(ZoneId.of("America/New_York"));Yukarıdaki kodu çalıştırdıktan sonra, newYork tokyo ile aynı anı ancak New York saat diliminde içerir:
2024-03-15T10:30-04:00[America/New_York]
// Example outputBir ZonedDateTime'ı biçimlendirmek için DateTimeFormatter kullanın. Desen harfi Z veya xxx, UTC ofsetini (ör. +09:00) biçimlendirir ve VV, bölge kimliğini (ör. Asia/Tokyo) biçimlendirir:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm xxx");
String formatted = tokyo.format(formatter);
// Örnek: 2024-03-15 10:30 +09:00Görev
KolayconvertTime adında dört argüman alan bir metod oluşturun:
- "yyyy-MM-dd HH:mm" formatında bir String (
dateTimeStr) - kaynak zaman dilimi ID'si olan bir String (
sourceZone) - hedef zaman dilimi ID'si olan bir String (
targetZone) - çıkışta zaman dilimi ofsetini dahil edip etmemek için bir boolean (
showOffset)
Metod şunları yapmalıdır:
- Kaynak zaman dilimindeki giriş tarihsaatını ayrıştırın
- Bunu hedef zaman dilimine dönüştürün
- Her iki zaman hakkında biçimlendirilmiş bilgi döndürün
Döndürülen mesajlar şunlar olmalıdır:
- Geçersiz tarihsaat durumunda: "Invalid datetime format" döndürün
- Geçersiz zaman dilimi durumunda: "Invalid time zone" döndürün
- showOffset true ise: çıktıda ofseti dahil edin
- Biçim: "Source: [time1], Target: [time2]"
Kopya kağıdı
ZonedDateTime, farklı zaman dilimleriyle çalışmak için yararlı olan, zaman dilimi içeren bir tarih ve saati temsil eder.
Belirli bir zaman diliminde bir zaman oluşturun:
ZonedDateTime tokyo = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));Bir LocalDateTime'ı .atZone() kullanarak ZonedDateTime'a dönüştürün:
LocalDateTime local = LocalDateTime.now();
ZonedDateTime zoned = local.atZone(ZoneId.of("Asia/Tokyo"));Zaman dilimleri arasında zaman dönüştürün:
ZonedDateTime newYork = tokyo.withZoneSameInstant(ZoneId.of("America/New_York"));Z veya xxx kalıplarını kullanarak UTC ofseti içeren bir ZonedDateTime biçimlendirin:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm xxx");
String formatted = zoned.format(formatter);
// Örnek: 2024-03-15 10:30 +09:00Kendin dene
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) {
// Kodunuzu buraya yazın
}
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));
}
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1Çok Boyutlu Diziler
2D Diziler Temelleri2D Dizi Elemanlarına Erişim2D Dizilerle İç İçe DöngülerÖzet - 2D DizilerMatris Toplama ve ÇıkarmaJagged Diziler3D Diziler ve ÖtesiYaygın 2D Dizi DesenleriÖzet - Diziler Hakkında Her Şey4HashSet 1. Kısım
HashSet Nedir?Eleman EklemeEleman KaldırmaElemanın Varlığını Kontrol EtmeBoş mu ve BoyutTemizle ve KlonlaÖzet - HashSet10Tarih ve Saat
LocalDate TemelleriLocalTime İşlemleriLocalDateTime KullanımıPeriod ve DurationTarih BiçimlendirmeZaman Dilimi Yönetimi2HashMap Bölüm 1
HashMap Nedir?HashMap TanımlamaDeğerlere ErişimAnahtarın Varlığını Kontrol EtmeSözlükleri DeğiştirmeÖzet - HashMap3HashMap Bölüm 2
HashMap YöntemlerikeySet() ile YinelemeentrySet() ile Yinelemeİç İçe HashMapÖzet - Depo YönetimiÖzet - HashMap İşlemleri6İleri Akış Kontrolü
Etiketli İfadelerSwitch İfadesiDesen EşleştirmeKoruyucu Yan CümlelerÖzet - Akış Kontrolü9Proje - Benzersiz Kelime Sayacı
Metin Girişi ve DepolamaKelime İşleme