tl; Dr.
Instant.ofEpochSecond( 1_280_512_800L )
2010-07-30T18: 00: 00Z
java.time
Java 8 ve sonraki sürümlerinde oluşturulan yeni java.time çerçevesi Joda-Time'ın halefidir.
Bu yeni sınıflar , çağdan tam saniyenin bir sayısını dönüştürmek için kullanışlı bir fabrika yöntemini içerir . Instant
UTC'deki zaman çizelgesinde nanosaniye çözünürlüğe kadar bir an alırsınız .
Instant instant = Instant.ofEpochSecond( 1_280_512_800L );
instant.toString (): 2010-07-30T18: 00: 00Z
Bu kodun IdeOne.com'da canlı yayınlandığını görün .
Asia/Kabul
veya Asia/Tehran
zaman dilimleri?
Burada görülen saat 18:00 yerine saat 22:30 değerini aldınız. PHP yardımcı programı dolaylı olarak UTC ayarlamak için varsayılan bir saat dilimi uyguluyor şüpheli. Buradaki değerim, Z
(kısa Zulu
, UTC anlamına gelir) ile belirtilen UTC'dir. Makineniz OS veya PHP ayarlandığında herhangi bir şans Asia/Kabul
ya da Asia/Tehran
zaman dilimleri? Sanırım IRST
çıktılarınızda rapor ettiğiniz gibi , bu İran zamanı anlamına geliyor. Şu anda 2017'de UTC'den dört buçuk saat önce yaz saati ile çalışan tek bölgeler bunlar .
Bir belirtme uygun bir zaman dilimi adı biçiminde continent/region
gibi America/Montreal
, Africa/Casablanca
ya da Pacific/Auckland
. 3-4 harfli bir kısaltma kullanmayın gibi EST
ya IST
ya IRST
oldukları gibi değil , gerçek zaman dilimleri, değil standardize ve hatta benzersiz değil (!).
Eğer varsa istediğiniz belirli bir bölgenin zaman dilimine lensleri vasıtasıyla an görmek, bir geçerli ZoneId
bir olsun ZonedDateTime
. Hala aynı anda, ama farklı bir duvar saati zamanı olarak görülüyor .
ZoneId z = ZoneId.of( "Asia/Tehran" ) ;
ZonedDateTime zdt = instant.atZone( z ); // Same moment, same point on timeline, but seen as different wall-clock time.
2010-07-30T22: 30 + 04: 30 [Asya / Tahran]
Java.time'dan eski sınıflara dönüştürme
Yeni java.time sınıflarına sadık kalmalısınız. Ancak gerekirse eski haline dönüştürebilirsiniz.
java.util.Date date = java.util.Date.from( instant );
Joda-Time
GÜNCELLEME: Joda-Time projesi şu anda bakım modunda ve ekip java.time'a geçişi tavsiye ediyor sınıflarına .
Joda-Time DateTime yapıcısı FYI benzer: Bir long
(değil int
!) Üretmek için bin ile çarpın .
DateTime dateTime = new DateTime( ( 1_280_512_800L * 1000_L ), DateTimeZone.forID( "Europe/Paris" ) );
Kötü niyetli java.util.Date ve .Calendar sınıflarından kaçınmak en iyisidir. Ancak bir Tarih kullanmanız gerekiyorsa, Joda-Time'dan dönüştürebilirsiniz.
java.util.Date date = dateTime.toDate();
Hakkında java.time
Java.time çerçevesi daha sonra Java 8 ve yerleşiktir. Bu sınıflar zahmetli eski yerini mirası gibi tarih-saat sınıfları java.util.Date
, Calendar
& SimpleDateFormat
.
Artık bakım modunda olan Joda-Time projesi java.time sınıflarına geçişi tavsiye ediyor .
Daha fazla bilgi için Oracle Eğiticisine bakın . Ve birçok örnek ve açıklama için Stack Overflow'da arama yapın. Spesifikasyon JSR 310'dur .
Sen değiştirebilir java.time sizin veritabanı ile doğrudan nesneleri. JDBC 4.2 veya üzeri ile uyumlu bir JDBC sürücüsü kullanın . Dizeye gerek yok, sınıflara gerek yok .java.sql.*
Java.time sınıflarını nereden edinebilirsiniz?
- Java SE 8 , Java SE 9 ve üstü
- Dahili.
- Paketlenmiş bir uygulamaya sahip standart Java API'sinin bir parçasıdır.
- Java 9 bazı küçük özellikler ve düzeltmeler ekler.
- Java SE 6 ve Java SE 7
- Android
- Android'in sonraki sürümleri java.time sınıflarının uygulamalarını bir araya getirir.
- Daha önceki Android için (<26), ThreeTenABP projesi , ThreeTen-Backport'u (yukarıda belirtilen) uyarlar . Bkz . ThreeTenABP nasıl kullanılır… .
ThreeTen-Ekstra proje ek sınıfları ile java.time uzanır. Bu proje, java.time'a gelecekteki olası eklemeler için bir kanıt zeminidir. Burada bazı yararlı sınıfları gibi bulabilir Interval
, YearWeek
, YearQuarter
, ve daha .