1. DateTimeFormatter sınıfı

Özel DateTimeFormattersınıf, Tarih Saat API'sinin yolunu bulur. Amacı, programcıların bir tarih ve saati tam olarak istedikleri biçime dönüştürmelerini olabildiğince kolaylaştırmaktır. Ve Java'nın yaratıcılarının başarılı olduğunu bildirmekten mutluluk duyuyoruz.

Bunu kullanmak çok kolaydır. İlk olarak, bir sınıf oluşturmanız DateTimeFormatterve tarih ve saati nasıl görüntüleyeceğini belirten bir kalıp geçirmeniz gerekir:

DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);

Nerede dtfbir DateTimeFormatterdeğişken. sınıfın statik bir yöntemidir . Ve desen, tarih ve saati görüntülemek için kullanılacak deseni belirten bir dizedir.DateTimeFormatter.ofPattern()DateTimeFormatter

örnekler

kod Konsol çıkışı
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MM-dd-yy");
String text = dtf.format( LocalDateTime.now() );
System.out.println(text);


02-22-19

Yukarıdaki örnekte, kalıbı temel alan ofPattern()bir nesne oluşturmak için yöntemi kullanıyoruz. DateTimeFormatterVe bir sonraki satırda, bir nesneyi dizgeye format()dönüştürmek için yöntemi kullanıyoruz. LocalDateTimeSonucu ekranda görüyorsunuz.

Date Time API'sinden neredeyse her nesneyi yönteme geçirebilirsiniz format().

Statik ofPattern()de çok basittir: bağımsız değişken olarak bir kalıp alır ve bir DateTimeFormatternesne döndürür. En ilginç kısım desende bulunur.


2. Biçimlendirme deseni

Bir model olarak iletilen dize, bilgi görüntülenirken bir model olarak kullanılır. MM yerine ay sayısı, dd ayın günü ve yy ise yıl sayısı ile değiştirilir. Harflerin durumu önemlidir.

Bu zaman kalıpları için tam tablo şudur:

Mektup Anlam
y Yıl
M Ay
D Gün
H Saat
M Dakika
S saniye
S saniyenin binde biri
N nanosaniye.

Hatırlamak özellikle zor değil.

Ancak örnekteki kalıp neden tekrarlanan MM, dd ve yy harflerini içeriyor? İşte burası daha ilginç hale geliyor.

Genel fikir

Harf sayısı metnin uzunluğunu etkiler. Ne kadar çok harf varsa, metin o kadar uzun olacaktır.

H harfi bir kez belirtilirse, 9 saat 9 olarak görüntülenir, ancak H harfi arka arkaya iki kez belirtilirse, 9 saat 09 olarak görüntülenir.

y harfi arka arkaya 2 kez belirtilirse, yıl 2 hane kullanılarak yazılır. Arka arkaya 4 kez oluşursa, 4 hane kullanılır.

M harfi arka arkaya 2 defa belirtilirse ay sayısı yazılır. Arka arkaya 3 defa ise ayın adı (ilk 3 harfi) kullanılır. Arka arkaya 4 kez ise, ayın tam adı kullanılır.

Örnek:

kod Konsol çıkışı
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM-dd-yyyy");
String text = dtf.format( LocalDateTime.now() );
System.out.println(text);


February-22-2019


3. Komple model tablosu

Tam tablo oldukça büyük ve çok ilginç:

Model desen varyasyonları Örnek Tanım
y yy, yyyy 19; 2019 Yıl
M/L M, MM, MMM, MMMM, MMMM 1; 01; Ocak; Ocak; J Ay
D d, dd 9; 09 Gün
H s, ss 2; 02 Saat
M m, mm 3; 03 Dakika
S s, ss 5; 05 saniye
S S, SS, SS, ... 1; 12; 123 saniyenin binde biri
N N 123456789 nanosaniye
G G, GGGG, GGGGG AD; Anno Domini; A; dönem
s/q q, qq, qqq, qqqq 3; 03; S3; 3. çeyrek Çeyrek
w w 13 yılın haftası
W W 3 ayın haftası
E EEE, EEE, EEEEE Pzt; Pazartesi; M Haftanın günü
e/c e, ee, ee, eeee, eeee 1; 01; Pzt; Pazartesi; M Haftanın günü
A A ÖĞLEDEN SONRA AM veya PM
H H 12 12 saatlik zaman.
V VV Avrupa/Helsinki Saat dilimi
z zzzzz DOĞU AVRUPA ZAMAN DİLİMİ; Doğu Avrupa Standart Saati Saat dilimi
Ö eyvallah GMT+2; GMT+02:00 Saat dilimi

Bu arada, bu aslında tam bir sürüm değil. En eksiksiz sürümü burada bulabilirsiniz .



4. Ayrıştırma süresi

Sınıf DateTimeFormatterayrıca, yalnızca tarih ve saati belirli bir kalıba göre bir dizgeye dönüştürmekle kalmayıp, aynı zamanda ters işlemi gerçekleştirme becerisiyle de ilgi çekicidir!

Bir dizeyi ayrıştırmak, onu anlamlı belirteçlere bölme işlemidir.

İşte göründüğü gibi:

kod Konsol çıkışı
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM-dd-yyyy");
LocalDate date = LocalDate.parse("February-23-2019", dtf);
System.out.println(date);


February-23-2019

İlk olarak, bir nesne yaratıyoruz DateTimeFormatterve ayrıştırma için kullanılan deseni ayarlıyoruz.

LocalDate.parse()Ardından or LocalTime.parse()or yöntemini çağırırız LocalDateTime.parse()ve nesneyle birlikte ayrıştırılacak dizgiyi iletiriz DateTimeFormatter; bu, iletilen metnin nasıl ayrıştırılacağını ve bunu yapmak için hangi kalıbın kullanılması gerektiğini anlar.

Başka bir örnek: bu sefer zamanı ayrıştıracağız.

kod Konsol çıkışı
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss");
LocalTime time = LocalTime.parse("23:59:59", dtf);
System.out.println(time);


23:59:59