İçindekiler
Tarihlerle çalışmak, programcıların kariyerinde her zaman bir dönüm noktası olmuştur. Bunun nedeni kısmen, önceki sürümlerde Java biraz kafa karıştırıcı ve tutarsızdı. Ancak yeni sürümde bir API bu, daha net ve kullanımı kolay yöntemlerle dilden en iyi şekilde yararlanmamızı sağlar.Bu, birlikte çalışmayı sağlar tarih ve saat biçimleri içinde Java eziyet etme. Bunun için, en çok kafa karışıklığına neden olan noktalardan birini tam anlamıyla ustalaşabileceğimiz bir şeye dönüştürmek amacıyla dilin bize sunduğu yeni formları ve olanakları incelemeliyiz.
İşi basitleştirmek için geliştirme ekibi Java ile çalışırken, kullanabileceğimiz bir dizi ortak yöntem sağladı. tarih, birlikte çalıştığımız zamanki gibi saatler. Bu, her iki nesne türü için de benzer bir davranışa sahip olması nedeniyle öğrenme çabasını azaltır.
Aşağıda en çok öne çıkan yöntemlerden bazılarını ne için kullanabileceğimize dair küçük bir açıklama ile listeleyeceğiz, bununla daha sonra pratik kısma geçtiğimizde genel bir fikir sahibi olabiliriz.
NSBu yöntem, onu çağıran nesnenin başka bir nesneyle bir kombinasyonunu yapmamızı sağlar.
biçimSonuç olarak ihtiyacımız olan belirli bir formatta bir tarih veya saat üretmek için bazı parametreleri kullanmamıza izin verir.
elde etmekBelirttiğimiz bir elemanı elde etmemizi sağlar.
dır-dirBir nesnenin karşılaştırma yaptığımız türden olup olmadığını doğrulamamızı sağlar.
artıBize onu çağıran nesneye bir ekleme ekleme imkanı verir ve halihazırda eklenen değerle bir kopyasını döndürür.
ileBir türden diğerine dönüşüm yapmamızı sağlar.
Şimdi bu bilgiyle, aynı tarih ve saat konusundaki diğer konulara geçebiliriz. Java.
Kullanılan formları açıkladığımız gibi Java Şimdi yeni sürüm için değiştiler, bu yüzden vereceğimiz örnekleri tekrarlamak için dil geliştirme kitinin 8. sürümüne ihtiyacımız var, aksi takdirde aşağıdaki gibi bir hata alırız:
Bunun için şu türden nesneleri somutlaştıracağımız bir sınıf oluşturacağız. YerelTarih, Yerel zaman Y YerelTarihSaat. Her biri bize sırasıyla geçerli tarihi, geçerli saati ve geçerli tarih ve saati verecektir.
Bu gibi durumlarda oldukça kullanışlıdır. sistem günlükleri, kaydetmek istediğimiz bir eylemin gerçekleştirildiği veya bir olayın gerçekleştiği tam anı yakalamamız gereken yer. Amaca ulaşmak için aşağıdakine benzer bir kod yapabiliriz:
java.time'ı içe aktar *; public class CurrentDate {public static void main (String [] args) {LocalDate currentDate = LocalDate.now (); System.out.println (currentDate); LocalTime currentTime = LocalTime.now (); System.out.println (currentTime); LocalDateTime şimdi = LocalDateTime.now (); System.out.println (şimdi); }}
Gördüğümüz gibi, yaptığımız tek şey, yukarıda belirtilen türdeki nesnelerimizi bildirmek ve onlara method ile döndürülen değeri atamak. şimdi (), geçerli tarih ve saati vermekten gerçekten sorumlu olan kişidir, o zaman yalnızca bildirilen nesnelerin her birini yazdırma konusunda endişeleniriz.
ÖnemliPaketi dahil etmek çok önemlidir java.zaman Kullandığımız tüm işlevlere erişebilmemiz için bütünlüğü içinde, ayrıca resmi belgelerde şüphelerimiz varsa, aynı seçeneklerin daha fazla ayrıntısını bulabiliriz.
Programımızın yürütülmesinin nasıl göründüğüne bakalım:
Geliştirmekte olduğumuz uygulamaya bağlı olarak, ayı takvimdeki numarasıyla veya adıyla göstermek isteyeceğiz, ancak ad tam veya kısaltılmış olabileceği gibi gün veya yıl da olabilir, tüm bunlar bize bir çok sayıda seçenek, hepsi eşit derecede geçerlidir. Bu sorunu çözmek için tarih biçimlendiriciyi kullanabiliriz.
Tarihleri biçimlendirmek için önceki paragrafta açıklanan değerleri elde etmemizi sağlayan bazı joker karakterlerimiz veya parametrelerimiz var. Bakalım hangileri en önemlileri.
- Y, yıla dört veya iki basamaklı biçimde (2014 veya 14) erişmemizi sağlar.
- NS, yılın gün sayısını (225) elde etmemizi sağlar.
- NS, Bir öncekinin aksine, söz konusu ayın gün sayısını (27) döndürür.
- L, yılın ayını sayısal biçimde elde etmemize yardımcı olur, m metinde bize ayı verir.
- H, bize zaman verir.
- s, bize saniyeleri verir.
- m, tutanak almamızı sağlar.
- ile, bize saatin am veya pm'sini verir.
- z, zaman diliminin adına erişmemizi sağlar.
java.time'ı içe aktar *; java.time.format'ı içe aktar *; public class DateFormatter {public static void main (String [] args) {DateTimeFormatter formatlı tarih = DateTimeFormatter.ofPattern ("yyyy / LL / dd"); System.out.println (FormattedDate.format (LocalDate.now ())); System.out.println (LocalDate.parse ("2014/11/15", Biçimlendirilmiş tarih)); DateTimeFormatter saat dilimi = DateTimeFormatter.ofPattern ("d MMMM, yyyy s: mm a"); System.out.println (ZonedDateTime.now (). Format (zaman dilimi)); }}
Vurgulayabileceğimiz ilk şey, her iki paketi de içe aktarmamız gerektiğidir. java.zaman paket olarak tüm sınıfları ile java.time.format tüm dersleriyle de. Alıştırmayı belirli sınıfları içe aktararak yapmak mümkündür, ancak bunu ev ödevi olarak bırakıyoruz, böylece resmi belgeleri görmeleri için bir görevleri var.
Sonra şu tipte bir nesne oluşturduğumuzu görüyoruz. TarihSaatBiçimi ve yöntemi kullanıyoruz ofDesen () belirtilen joker karakterleri kabul edersek, jokerleri kopya olarak yerleştirdiğimizi görüyoruz. yyyy cari yılın dört hanesini elde etmek için veya dakikanın iki hanesini elde etmek için mm.
Son olarak, tarihlerin her birini formatlarıyla birlikte yazdırıyoruz ve programımızı çalıştırdığımızda aşağıdakileri elde ediyoruz:
Yeni tarih ve saat sınıflarına verebileceğimiz bir diğer kullanım Java bir metin dizesinden gelen tarihleri kullanabilmektir, bunlar bir kullanıcı tarafından oluşturulabilir, bir metin dosyasından gelebilir, vb. Ama önemli olan onları manipüle etmemiz ve bunun için elimizdeki tüm araçları kullanabilmemizdir.
Aşağıdaki kodda, gördüklerimizden faydalanarak, bir metin dizesinden bir tarihte nasıl değişiklik yapabileceğimizi görelim.
java.time'ı içe aktar *; java.time.format'ı içe aktar *; public class StaticDate {public static void main (String [] args) {String StartDate = "1906-12-31"; LocalDate alınanTarih = LocalDate.parse (başlangıçTarihi); System.out.println ("Tarih:" + AlınanTarih); Dize dateStartTime = "1906-12-31T12: 05"; LocalDateTime TakenDateTime = LocalDateTime.parse (TimeInitialDate); System.out.println ("Tarih / Saat:" + dateTakTime); DateTimeFormatter df = DateTimeFormatter.ofPattern ("dd MMM uuuu"); System.out.println (TakenDate + "Yeni formatla:" + df.format (TakenDate)); }}
Kodda, bir metin dizesinde nasıl bir başlangıç tarihi oluşturduğumuzu görüyoruz, ardından türdeki bir nesneyle YerelTarih yöntemi kullanıyoruz Ayrıştırma metin dizesini bir tarih türü nesneye dahil etmek için nesneyi yazdırırız ve tarihi doğru şekilde alıyorsa, aynı prosedürü yinelediğimizi ancak tarih ve saati kullanarak YerelTarihSaat.
Son olarak, ilk oluşturduğumuz nesneyi alıp ona yeni bir format uygularız, böylece bir metin dizisinden oluşturduğumuz bir tarihi girip değiştirebildiğimizi onaylarız. Programımızı çalıştırdığımızda neye benzediğini görelim: