'u kullanarak kısa zaman dilimi adını görüntüleyin Aşağıdaki DateTimeFormatter
ürününe sahibim.DateTimeFormatter
DateTimeFormatter DATE_TIME_FORMATTER =
DateTimeFormatter.ofPattern("MM/dd/yyyy 'at' hh:mm:ss a zzzz");
Böyle bir ZonedDateTime
biçimlendirmek için onu kullanıyorum:
09/16/2015 at: Aşağıdaki gibi biçimlendirilmiş bir tarih dizesi çıkışına için bu istiyoruzZonedDateTime disableTime = Instant.now() .plus(Duration.ofDays(21)) .atZone(ZoneId.ofOffset("UTC", ZoneOffset.ofHours(-5))); System.out.println(DATE_TIME_FORMATTER.format(disableTime));
13:15:45 EDT
Ama ne çıktı oluyor şudur: 1: 01 de
09/16/2015 17:45 UTC-05: 00
ben desende z
, zz
, zzz
veya zzzz
kullanmak olursa olsun, her zaman yukarıda biçiminde çıkış alır.
ZonedDateTime
'u oluşturmak istediğiniz çıktıyı verecek farklı bir yol var mı, yoksa desende yanlış bir şey mi yapıyorum? z
örneğin Eastern Daylight Time
veya EDT
olarak, zaman dilimi adını görüntülemek için kullanılması gereken süre DateTimeFormatter
documentation uyarınca
, O
lokalize bölgeyi kaçıklığı, örneğin UTC-05:00
olarak göstermek için kullanılır.
ile aldım. ZoneId.of ("America/New_York") 'kullandım ve bana istenen sonucu verdi. Teşekkür ederim! –
java.time paketinin "ZoneId.ofOffset (" UTC ", ZoneOffset.ofHours (-5))' i tanımamasının bir nedeni var mı "ZoneId.of (" America/New_York ")' ile eşdeğerdir? Yoksa eşdeğer değiller mi? –
Ah, nevermind. Çünkü ZoneId.ofOffset ("UTC", ZoneOffset.ofHours (-5)) "her zaman bir UTC-05: 00 ofsetine sahip olurken, ZoneId.of (" America/New_York) "UTC-05 arasında değişecektir: 00 ve UTC-04: 00, gün ışığından yararlanma saatine göre, bu yüzden eşdeğer değiller. Şimdi mantıklı geliyor –