Noda Time kodunun çok daha fazlasını dahili tutar. Bu aslında ki, daha az esnek hale getirir olamaz kendi takvim sistemi oluşturmak - ama aynı zamanda API öğrenmek ve kullanmak hem daha basit olduğu anlamına gelir.
Nullity, Noda Time'da neredeyse her zaman bir hatadır. Artık "bir saat dilimi için null değerini iletirseniz, yalnızca sistem varsayılanını kullanırız." Açık olmanız gerekir.
Varsayılanlardan bahsetmişken ... sistem saatini varsayılan olarak kullanmayız. IClock
Bir SystemClock
uygulamayla ayrı bir arayüzümüz var , ancak hiçbir şey varsayılan olarak "şimdiki zaman" a ayarlanmıyor.
Spesifik kurucu sınıfların yanı sıra, her şey değişmezdir. Sanırım MutableDateTime
Joda Time'daki (et al) bir hata idi.
Takvim sistemini ve saat dilimini birbirinden ayırdık, çünkü gerçekten çok farklı kaygılar. Örneğin LocalDate
, kullandığı takvim sistemini bilir, ancak saat dilimini bilmez.
Yerel tarih / saat değerlerinin bölge tarih / saat değerlerine çözümlenme biçimi JSR-310'a Joda Saati'nden daha yakındır. Belirsizlik / atlanan zamanları belirli bir şekilde ele almıyoruz: kullanıcıya istediklerini söylemesini sağlıyoruz.
Joda Time, zayıf yazılan bir API'dan (ör. Yeni Instant(Object)
) ne istediğinizi tahmin etmeye çalıştığı çeşitli yerlere sahiptir . Noda Time bundan mümkün olduğunca kaçınır - çok daha açıktır.
Noda Time, hangi türlerde ne tür aritmetik yapabileceğiniz konusunda daha katıdır. Yani, örneğin, bir ekleyemezsiniz Period
a ZonedDateTime
hangi could işleri berbat yaz saati geçişleri etrafında garipliğiyiz çünkü. Bunun yerine, kullanıcıları bölgelere dönüştürülmemiş LocalDateTime
bir bağlamda istedikleri kadar aritmetik yapmaya ve sonra geri dönüştürmeye teşvik ediyoruz .
Noda Time, kalıtımı daha az kullanır - Joda Time'daki hiyerarşiler çok derin ve karmaşıktır. Noda Time'ın birçoğunun değer türlerine dayandırılması aslında bunu zaten zorlamaktadır, ancak hala sınıf mirasını kullandığımız bazı yerler vardır, ancak miras hiyerarşisini önemli ölçüde daraltmayı başardım ... çoğu zaman pahasına değerli görmediğim esneklik :)