tl; dr
LocalDateTime.parse("2016-12-21T07:48:36") // Parse as a `LocalDateTime` given the lack of an offset or zone. *Not* an actual moment, only a rough approximation of potential moments along a range of about 26-27 hours.
.atOffset(ZoneOffset.ofHours(14)) // Assign an offset-from-UTC as context, giving meaning to determine an actual point on the timeline.
.toInstant() // Renders `Instant` object in UTC.
java.time
modern bir yoldur sonra Java 8 ve yerleşik java.time sınıflar ile olduğunu. İşlevlerin çoğu, ThreeTen-Backport projesinde Java 6 & 7'ye geri yüklendi. o ofset veya bölge hakkında herhangi bir bilgi yoksun olarak
ZoneOffset offset = ZoneOffset.ofHours(14); // fourteen hours ahead of UTC.
bir
LocalDateTime
olarak dizgesini çözümler. Girişiniz standart
ISO 8601 biçiminde olduğundan, bir biçimlendirme deseni belirtmenize gerek yoktur.
LocalDateTime ldt = LocalDateTime.parse("2016-12-21T07:48:36");
bir OffsetDateTime
bir nesne almak için yerel tarih-zaman ofset uygulayın. Bu itibaren
OffsetDateTime odt = ldt.atOffset(offset);
, UTC daima bir Instant
ayıklamak.
Instant instant = odt.toInstant();
instant.toString(): 2016-12-20T17: 48: 36Z UTC olarak
, değer farklı bir tarih, yerine 21 20. olup.
Bkz. live code at IdeOne.com.
Hakkında java.time
java.time çerçeve daha sonra Java 8 ve yerleşiktir. Bu sınıflar, java.util.Date
, Calendar
, & SimpleDateFormat
gibi zahmetli eski legacy tarih-saat sınıflarını tamamlar.
Joda-Time projesinin şimdi maintenance mode projesinde, java.time sınıflarına geçişi önerir.
Daha fazla bilgi için, bkz. Oracle Tutorial. Ve birçok örnek ve açıklamalar için Stack Overflow'u arayın. Şartname JSR 310. Bir JDBC driver uyumlu JDBC 4.2 ile veya daha sonra kullanmak
, kendi veritabanı ile nesnelerin doğrudan java.time değiştirebilir. Dizelere ve java.sql. * Sınıflarına gerek yoktur.
java.time sınıflarını nereden edinebilirim?
- Java SE 8, Java SE 9 ve daha sonra
- Dahili.
- Paketlenmiş bir uygulama ile standart Java API'nin bir parçası.
- Java 9, bazı küçük özellikler ve düzeltmeler ekler.
- Java SE 6 ve java.time işlevlerinin büyük bir kısmına
- Android
ThreeTen-Extra proje ilave sınıfları ile java.time uzanır. Bu proje java.time için gelecekteki olası eklemeler için kanıtlanmış bir zemin. Burada Interval
, YearWeek
, YearQuarter
ve more gibi bazı yararlı sınıflar bulabilirsiniz.
Sorununuzun yalnızca desteklenmeyen "UTC + 14" ü kullanmanız olduğunu biliyorsunuz. getTimeZone sadece "GMT + xx" formunu bilir – Sxilderik
** + 14 ** ofsetini nereden aldınız? –