OCA Java imtahan mövzuları

Creating Dates and Times

Bu mövzu java 8-ci versiya ilə gəlmiş yeni mövzulardan biridir. Köhnə versiyalardakı tarix və vaxtla bağlı classlardan istifadə edərək hələ də işləmək mümkündür, lakin tarix və vaxtla bağlı köhnə mövzulardan imtahanda suallar olmayacaq, ancaq yeni mövzu ilə əlaqəli suallar olacaq. Mənə təxminən 4 ya 5 sual düşmüşdü.

Tarix və vaxtla bağlı yeni classlardan istifadə edə bilmək üçün ilk öncə java.time paketi import olunmalıdır.

  • import java.time.*;

Bu paketə daxil olan və imtahanda istifadə olunan əsas classlar LocalDate, LocalTime, LocalDateTime, Instant, Period, Duration və başqalarıdır. Bu classlar hamısı immutable və thread safe`dir.

  • LocalDate – saat və saat qurşağı (time zone) daxil deyil, ancaq tarixi göstərir. Nümunə üçün sizin ad günü tarixiniz buna misal olar bilər.
  • LocalTime – tarix və saat qurşağı daxil deyil, ancaq vaxtı/saatı göstərir.
  • LocalDateTime – həm tarixi, həm də saatı göstərir, lakin saat qurşağı daxil deyil.

Oracle ehtiyac olmadıqca saat qurşağından qaçınmağı məsləhət görür. Cari tarix və ya vaxtı öyrənmək üçün hər üç classın static now() metodundan istifadə edilir.

System.out.println(LocalDate.now());       // 2015-08-12
System.out.println(LocalTime.now());       // 12:40:37.095
System.out.println(LocalDateTime.now());   // 2015-08-12T12:40:37.095

LocalDateTimeString`ə çevirən zaman tarix və saatı bir-birindən ayırmaq üçün Java T simvolu istifadə edir. Bir də yadda saxlamaq lazımdır ki, tarix formatında ay həmişə gündən əvvəl gəlir.

Hər hansı bir spesifik tarix və ya vaxt yaratmaq istəyiriksə, of() metodundan istifadə edirik.

 

LocalDate of() method signature:

  • public static LocalDate of(int year, Month month, int dayOfMonth)
    public static LocalDate of(int year, int month, int dayOfMonth)
LocalDate date1 = LocalDate.of(2015, Month.JANUARY, 10);  // 2015-01-10
LocalDate date2 = LocalDate.of(2015, 1, 10);              // 2015-01-10

of() metoduna 2-ci parametr olaraq həm enum, həm də int tipində dəyişən göndərmək mümkündür. int tipində parametr göndərərkən diqqət etmək lazımdır ki, say 0-dan deyil 1-dən başlamalıdır.

 

LocalTime of() method signature:

  • public static LocalTime of(int hour, int minute)
    public static LocalTime of(int hour, int minute, int second)
    public static LocalTime of(int hour, int minute, int second, int nanoOfSecond)
LocalTime time1 = LocalTime.of(6, 15);            // 06:15
LocalTime time2 = LocalTime.of(6, 15, 30);        // 06:15:30
LocalTime time3 = LocalTime.of(6, 15, 30, 200);   // 06:15:30.000000200

 

LocalDateTime of() method signature:

  • public static LocalDateTime of(int year, Month month, int day, int hour, int min)
    public static LocalDateTime of(int year, Month month, int day, int hour, int min, int sec)
    public static LocalDateTime of(int y, Month m, int day, int hour, int min, int sec, int nanos)
    public static LocalDateTime of(int year, int month, int day, int hour, int minute)
    public static LocalDateTime of(int year, int month, int day, int hour, int min, int sec)
    public static LocalDateTime of(int year, int m, int day, int hour, int min, int sec, int nanos)
    public static LocalDateTime of(LocalDate date, LocalTime time)
LocalDateTime dateTime1 = LocalDateTime.of(2015, Month.JANUARY, 10, 6, 15);
LocalDateTime dateTime2 = LocalDateTime.of(date1, time1);

LocalDate, LocalTimeLocalDateTime classlarının konstruktoru private olduğundan new açar sözü ilə birbaşa obyekt yaratmaq mümkün deyil.

LocalDate d = new LocalDate();   // does NOT compile

Digər çaşdırıcı məqam isə of() metoduna parametr kimi doğru olmayan ədədlərin göndərilməsidir.

LocalDate.of(2015, Month.JANUARY, 32);  // DateTimeException: Invalid value for DayOfMonth (valid values 1 - 28/31): 32

 

*Yeni üsulla köhnə üsulun fərqi:java-date-old-new-way

 

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