Calendar
nesnesinin java.time.Instant
veya java.time.ZonedDateTime
'dan almanın en basit yolu nedir?java.time öğesini Takvim'e dönüştürme
cevap
Bir GregorianCalendar#from(ZonedDateTime)
yönteminin bulunduğunu bilmeniz koşuluyla ZonedDateTime
numaralı telefondan Calendar
anı almak oldukça kolaydır. Bu yöntemin neden Calendar
sınıfında bulunmadığı hakkında Threeten-dev mail group numaralı makalede bir tartışma oluştu. Yine de çok derin bir tartışma değil. Ancak, Instant
'dan Calendar
'a dönüştürmenin doğrudan bir yolu yoktur. Bunun için bir ara devlet olması ettik:
Instant instant = Instant.now();
ZonedDateTime zdt = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault());
Calendar cal1 = GregorianCalendar.from(zdt);
Bu muhtemelen this oracle tutorial tabloda de anlaşılacağı üzere, çünkü, daha ziyade bir Calendar
daha Date
bir Instant
haritalar. Benzer şekilde, ZonedDateTime
, Calendar
ile eşleşir.
GregorianCalendar.from(ZonedDateTime.ofInstant(instant, zoneId))
nasıl?
TemporalAccessor'dan ZonedDateTime alınamadı: 2001-12-17T09: 30: 47Z java.time.Instant – Line
Gerçekten de, bir ZoneId belirtmeniz gerekir. Cevabımı güncelledim. –
Anı kullanarak TimeZone'u almanız ve ardından bir takvim alabilmeniz gerekir.
Calendar myCalendar = GregorianCalendar.from(ZonedDateTime.ofInstant(Instant.now(), ZoneId.systemDefault()));
Ne denediniz? Sorun nedir? Javadoc serbestçe kullanılabilir, biliyorsun. –
Saygınlığınızla ilgili olarak, muhtemelen 'Takvim cal = Calendar.getInstance(); cal.setTimeInMillis (Instant.now(). toEpochMilli()); 'peki bu çözümde sorun nedir? – Pshemo
Ve muhtemelen siz de denediniz - 'GregorianCalendar.from (zonedDateTime); –