-
JavaScript Temporal yayını başlıyor
- Yeni JavaScript Temporal nesnesinin uygulaması, tarayıcıların deneysel sürümlerine dahil edilmeye başladı. Bu, web geliştiricileri için büyük bir haber; çünkü JavaScript'te tarih ve saatle çalışmak önemli ölçüde sadeleşecek ve modernleşecek.
- Takvim planlama, uluslararasılaştırma ve zamana duyarlı verilere dayanan uygulamalar; yerleşik özellikleri kullanarak verimli, doğru ve tutarlı tarih, saat, süre ve takvim işleyişinden yararlanabilecek.
- Kararlı tarayıcılar arası desteğe ulaşmaya daha çok var ve uygulama geliştikçe değişiklikler olabilir; ancak şimdiden mevcut Temporal'a göz atıp neden önemli olduğunu ve hangi sorunları çözdüğünü anlayabilirsiniz.
- Bu hafta MDN'e eklenen, ayrıntılı açıklamalar ve örnekler içeren 270 sayfadan fazla Temporal dokümantasyonu bulunuyor.
-
JavaScript Temporal nedir?
- Temporal'ı anlamak için JavaScript'in
Date nesnesine bakabiliriz. JavaScript 1995'te oluşturulduğunda, Date nesnesi Java'nın ilk dönemlerdeki hatalı java.util.Date uygulamasından kopyalandı.
- Java bu uygulamayı 1997'de değiştirdi, ancak JavaScript yaklaşık 30 yıldır aynı API'ye sıkışmış durumda.
- JavaScript'in
Date nesnesindeki temel sorun, yalnızca kullanıcının yerel saatini ve UTC'yi desteklemesi, zaman dilimi desteğinin olmamasıdır. Ayrıca ayrıştırma davranışı oldukça güvenilmezdir ve Date nesnesinin değiştirilebilir olması, izlemesi zor hatalara yol açabilir.
- Tüm bu sorunlar nedeniyle JavaScript'te tarih ve saatle çalışmak karmaşık ve hataya açık hale gelir. Geliştiricilerin çoğu, uygulamalarında tarih ve saati daha iyi işlemek için Moment.js ve date-fns gibi kütüphanelere güvenir.
- Temporal,
Date nesnesinin yerini tamamen almak üzere tasarlandı ve tarih/saat yönetimini güvenilir ve öngörülebilir hale getiriyor. Temporal; zaman dilimi ve takvim gösterimlerini destekliyor, ayrıca dönüştürme, karşılaştırma, hesaplama, biçimlendirme ve daha fazlası için birçok yerleşik metot ekliyor.
-
Temel kavramlar
- Temporal'daki temel kavramlar; anlık zaman noktası, duvar saati zamanı (yerel zaman) ve süredir. API, bu kavramları ele almak için şu yapıya sahiptir:
- Süre:
Temporal.Duration, iki zaman noktası arasındaki fark
- Zaman noktaları:
- Benzersiz zaman noktası:
- Zaman damgası olarak:
Temporal.Instant
- Zaman dilimli tarih-saat:
Temporal.ZonedDateTime
- Zaman diliminden bağımsız tarih/saat ("Plain"):
- Tam tarih ve saat:
Temporal.PlainDateTime
- Yalnızca tarih:
Temporal.PlainDate
- Yıl ve ay:
Temporal.PlainYearMonth
- Ay ve gün:
Temporal.PlainMonthDay
- Yalnızca saat:
Temporal.PlainTime
- Şimdi: çeşitli sınıf örnekleri veya belirli bir biçimde güncel zamanı almak için
Temporal.now kullanılır
-
Temporal örnekleri
- Temporal'ın en temel kullanım örneklerinden bazıları, mevcut tarih ve saati ISO dizeleri olarak almaktır. Artık birçok metoda zaman dilimi verilebildiğinden, karmaşık hesaplamaları kendiniz yapmanız gerekmez.
- Farklı takvimlerle çalışmak da sadeleşiyor; böylece Gregoryen takvimin dışındaki takvim sistemlerinde de (ör. İbrani, Çin, İslam) tarih oluşturabilirsiniz.
- Unix zaman damgalarıyla çalışmak çok yaygın bir kullanım senaryosudur; çünkü birçok sistem (API'ler, veritabanları) zamanı temsil etmek için bu biçimi kullanır.
compare() metodu, sürelerin zarif ve verimli biçimde sıralanmasını sağlar.
-
Temporal'ı deneme ve tarayıcı desteği
- Destek, deneysel tarayıcı sürümlerine yavaş yavaş eklenmeye başladı ve şu anda en olgun uygulama Firefox'ta bulunuyor.
- Firefox'ta Temporal,
javascript.options.experimental.temporal ayarının arkasında Nightly sürümüne yerleşik olarak geliyor.
- Deneysel uygulamaların devreye girmesiyle birlikte, Temporal'ı denemek ve JavaScript'te tarih/saat işlemenin modern yaklaşımını öğrenmek için iyi bir zamandayız.
-
Teşekkür
- Konu üzerindeki çalışmaları için Eric Meyer'e teşekkür ediliyor. Eric'in, mdn/content fork'unda tarayıcı uyumluluk verilerini belgelemesinin ve dokümantasyonu yapılandırmasının üzerinden yaklaşık 4 yıl geçti.
- Joshua Chen, Eric'ten bayrağı devralarak MDN dokümantasyonu için pull request hazırladı.
- Firefox Temporal uygulaması üzerindeki çalışmaları için André Bargull'a teşekkür ediliyor.
1 yorum
Hacker News görüşleri
Temporal, mevcut Date() API'sindeki sorunları çözmek için faydalı. Rust'ın chrono'su ve Java'nın Joda Time'ı gibi yüksek kaliteli zaman kütüphanelerinden ilham alarak kullanışlı bir API sunuyor
Temporal.ZonedDateTime.prototype.withTimeZone() kullanılarak zaman dilimi dönüştürülebilir
formatfonksiyonu sunmuyorTemporal önerisi iyi, ancak karşılaştırmada referans eşitliği kullanması hayal kırıklığı yaratıyor
TC39'da birçok özellik geliştiriliyor ve Temporal'ın bir an önce çıkması isteniyor
Temporal'ın zaman dilimi verilerini nasıl güncellediği merak ediliyor
Zaman dilimi değiştiğinde bir event eklenmesi öneriliyor
Temporal adı, genel zaman nesneleriyle çakışmayı önlemek için seçilmiş, ancak ilk bakışta çöp toplama kontrolüyle karıştırılabilir
PHP'deki Carbon sınıfı, DateTime'dan kalıtım alarak değiştirilebilir zaman damgalarıyla çalışmanın sorunlarını açıklıyor
JavaScript Temporal ile ilgili çeşitli makaleler ve tartışmalar var