OCA Java imtahan mövzuları

Formatting Dates and Times

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 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

java-localized-methods

 

[topics lang=az]

 

 “OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808”, by J.Boyarsky & S.Selikoff

About the author

Mushfiq Mammadov

Leave a Comment


The reCAPTCHA verification period has expired. Please reload the page.

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.