CodeGym /Kurslar /Java SELF AZ /Datetime API ilə işləyərkən faydalı nüanslar

Datetime API ilə işləyərkən faydalı nüanslar

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. LocalDateTime sinfi

LocalDateTime sinfi LocalDateLocalTime siniflərinin imkanlarını birləşdirir: həm tarixi, həm də vaxtı saxlayır. Onun obyektləri də dəyişməzdir və onun metodları LocalDateLocalTime siniflərinin metodlarına bənzərdir.

Hal-hazırki anın alınması: tarix və vaxt

Burada hər şey gözlənildiyi kimidir: now() metodu istifadə olunur. Nümunə:

Kod Ekran çıxışı
LocalDateTime time = LocalDateTime.now();
System.out.println("İndi = " + time);

İndi = 2019-02-22T09:49:19.275039200

Ekrana çıxışı zamanı tarix və vaxt T hərfi ilə ayrılır.

Müəyyən bir anın alınması: tarix və vaxt

Hər şey LocalDateLocalTime siniflərinə bənzəyir — of() metodu istifadə olunur:

... = LocalDateTime.of(il, ay, gün, saat, dəqiqə, saniyə);

İlk olaraq tarix parametrləri LocalDate sinifində olduğu formada, sonra isə vaxt parametrləri LocalTime sinfində olduğu formada verilir. of() metodunun bütün variasiyaları aşağıda göstərilib:

Metodlar
of (int year, int month, int day, int hour, int minute)
of (int year, int month, int day, int hour, int minute, int second)
of (int year, int month, int day, int hour, int minute, int second, int nano)
of (int year, Month month, int day, int hour, int minute)
of (int year, Month month, int day, int hour, int minute, int second)
of (int year, Month month, int day, int hour, int minute, int second, int nano)
of (LocalDate date, LocalTime time)

Tarixi birbaşa və ya LocalDateLocalTime obyektləri vasitəsilə təyin etmək olar:

Kod
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime current = LocalDateTime.of(date, time);
System.out.println("İndi = " + current);

LocalDateTime date = LocalDateTime.of(2019, Month.MAY, 15, 12, 15, 00);
System.out.println("İndi = " + date);
Ekran çıxışı
İndi = 2019-02-22T10:05:38.465675100
İndi = 2019-05-15T12:15

LocalDateTime sinfinin tarix və/və ya vaxtın hissəsini almaq üçün metodları mövcuddur. Onlar LocalDateLocalTime siniflərinin metodlarına tamamilə oxşardır. Onları burada təkrarlamayacağıq.



2. Instant Sinfi

Java tərtibatçıları köhnə metodları da unutmamışlar.

Date Time API-ya kompüterlərin içindəki proseslərlə işləmək üçün nəzərdə tutulmuş Instant sinfi əlavə edilmişdir. Saatlar, dəqiqələr və saniyələr əvəzinə, o, saniyə, millisaniyə və nanosaniyə ilə işləyir.

Bu sinif iki sahəni saxlayır:

  • saniyələrin sayı, 1 yanvar 1970-dən bəri keçən
  • nanosaniyələrin sayı

Bu sinif tərtibatçılar üçün yaradılmışdır? Bəli! Ona görə də Unix-time ilə işləyir: 1970-ci ilin əvvəllərindən bəri.

Hətta deyə bilərik ki, Instant sinfi Date sinfinin sadələşdirilmiş versiyasıdır: yalnız proqramçılar üçün lazım olan hissələr saxlanılıb.

Instant obyektini LocalTime obyektində olduğu kimi əldə etmək olar:

Instant timestamp = Instant.now();

Burada timestamp — Instant sinfinin dəyişəni, Instant.now() isə Instant sinfinin statik now() metodunun çağırışıdır.

Nümunə:

Kod Ekrana çıxış
Instant timestamp = Instant.now();
System.out.println(timestamp);

2019-02-22T08:42:42.234945300Z

Həmçinin 1 yanvar 1970-dən keçmiş vaxtı verərək, müxtəlif of() metodları ilə yeni obyekt yarada bilərsiniz:

ofEpochMilli(long milliseconds)
Millisaniyə sayını ötürmək lazımdır
ofEpochSecond(long seconds)
Saniyə sayını ötürmək lazımdır
ofEpochSecond(long seconds, long nanos)
Saniyə və nanosaniyə ötürmək lazımdır

Instant obyektlərinin metodları

Instant sinfində iki metod var ki, onların dəyərlərini qaytarır:

long getEpochSecond()
1 yanvar 1970-dən keçən saniyələrin sayı
int getNano()
Nanosaniyələr
long toEpochMilli()
1 yanvar 1970-dən keçən millisaniyələrin sayı

Həmçinin, mövcud obyekt əsasında yeni Instant obyektləri yarada bilən metodlar da mövcuddur:

Instant plusSeconds(long)
Hazırkı vaxta saniyələr əlavə edir
Instant plusMillis(long)
Millisaniyələr əlavə edir
Instant plusNanos(long)
Nanosaniyələr əlavə edir
Instant minusSeconds(long)
Saniyələri azaldır
Instant minusMillis(long)
Millisaniyələri azaldır
Instant minusNanos(long)
Nanosaniyələri azaldır

Nümunələr:

Kod Ekrana çıxış
Instant timestamp = Instant.now();
System.out.println(timestamp);

long n = timestamp.toEpochMilli();
Instant time = Instant.ofEpochMilli(n);
System.out.println(time);

2019-02-22T09:01:20.535344Z



2019-02-22T09:01:20.535Z

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION