Hər hansı tarix və ya vaxtdan müəyyən məlumatların əldə edilməsi üçün bir sıra metodlar mövcuddur:
LocalDate date = LocalDate.now(); // 2015-08-14 System.out.printf("%s, %s, %d, %d%n", date.getDayOfWeek(), /* FRIDAY */ date.getMonth(), /* AUGUST */ date.getYear(), /* 2015 */ date.getDayOfYear() ); /* 226 */
Tarix və ya vaxt ilə bağlı məlumatları istədiyin formatda görüntüləyə bilmək üçün java.time.format
paketində mövcud olan DateTimeFormatter
classından istifadə olunur. Standart ISO görüntüsü aşağıdakı kimidir:
LocalDate date = LocalDate.of(2020, Month.JANUARY, 20); LocalTime time = LocalTime.of(11, 12, 34); LocalDateTime dateTime = LocalDateTime.of(date, time); System.out.println(date.format(DateTimeFormatter.ISO_LOCAL_DATE)); System.out.println(time.format(DateTimeFormatter.ISO_LOCAL_TIME)); System.out.println(dateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
Output:
2020-01-20
11:12:34
2020-01-20T11:12:34
Lakin əvvəlcədən tanımlanmış bir neçə faydalı format da mövcuddur. İmtahanda əsasən SHORT və MEDIUM formatları düşür.
LocalDate date = LocalDate.of(2020, Month.JANUARY, 20); LocalTime time = LocalTime.of(11, 12, 34); LocalDateTime dateTime = LocalDateTime.of(date, time); DateTimeFormatter shortDate = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT); DateTimeFormatter shortTime = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT); DateTimeFormatter shortDateTime = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT); DateTimeFormatter mediumDateTime = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM); System.out.println(shortDate.format(dateTime)); // 1/20/20 System.out.println(shortDate.format(date)); // 1/20/20 System.out.println(shortDate.format(time)); // UnsupportedTemporalTypeException /* Yerlərini dəyişmək də olar */ System.out.println(dateTime.format(shortDate)); // 1/20/20 System.out.println(date.format(shortDate)); // 1/20/20 System.out.println(time.format(shortDate)); // UnsupportedTemporalTypeException System.out.println(shortDateTime.format(dateTime)); // 1/20/20 11:12 AM System.out.println(mediumDateTime.format(dateTime)); // Jan 20, 2020 11:12:34 AM
Əgər hazır formatları istifadə etmək istəməsəniz, öz istədiyiniz formatı da yarada bilərsiniz:
DateTimeFormatter f1 = DateTimeFormatter.ofPattern("MMMM dd, yyyy, hh:mm"); DateTimeFormatter f2 = DateTimeFormatter.ofPattern("d/MMM/yy, hh:mm:ss"); System.out.println(dateTime.format(f1)); // January 20, 2020, 11:12 System.out.println(dateTime.format(f2)); // 20/Jan/20, 11:12:34 DateTimeFormatter f = DateTimeFormatter.ofPattern("hh:mm"); f.format(dateTime); // 11:12 f.format(date); // UnsupportedTemporalTypeException f.format(time); // 11:12
MMMM – ayı göstərir. Məsəlçün, M – 1, MM – 01, MMM – Jan, MMMM – January.
dd – ayın gününü göstərir (day of month). d – 1, dd – 01.
yyyy – ili göstərir. yy – 15, yyyy – 2015.
hh – saatı göstərir.
: – ayrıcı kimi istifadə olunur.
mm – dəqiqəni göstərir.
Format nümunələrində pattern’ə diqqətlə baxmaq lazımdır. Aşağıdakı nümunədə böyük yaxud kiçik hərf duyarlılığına görə nəticələr də fərqli olur:
LocalDateTime dateTime = LocalDateTime.of(2017, 6, 23, 10, 40); DateTimeFormatter f1 = DateTimeFormatter.ofPattern("hh:mm"); DateTimeFormatter f2 = DateTimeFormatter.ofPattern("hh:MM"); f1.format(dateTime); // 10:40 f2.format(dateTime); // 10:06
Bundan əlavə parse()
metodunu istifadə edən zaman göndərilən parametrə diqqət etmək lazımdır. Məsələn, aşağıdakı nümunədə ldt
dəyişəni LocalDateTime
, amma pattern LocalDate
tipindədir. Pattern’də saatla bağlı məlumat qeyd olunmadığına görə runtime vaxtı DateTimeParseException
baş verəcək. Amma pattern kommentdə qeyd olunan formada olsa exception baş verməyəcək:
CharSequence pattern = "2017-06-23"; // 2017-06-23T12:20 is valid LocalDateTime ldt = LocalDateTime.parse(pattern); System.out.println(ldt);
Əlavə olaraq qeyd edək ki, DateTimeParseException
RuntimeException
‘dan törədiyi üçün “handle” və ya “declare” etməyə ehtiyac yoxdur. Bu mövzu Chapter 6-da geniş şəkildə qeyd ediləcək.
*TABLE 1. ofLocalized methods
[topics lang=az]