← Back to list

Java Migrating LocalDateTime

Merhabalar,

Huseyin Baduk · 2025-02-11 12:01 · 3 claps · 2.3 min read
#java #date #datetime #localdatetime #migration
Open on Medium ↗

Java Migrating LocalDateTime

Merhabalar,

Java’da söz konusu zaman ve tarih işlemleri olunca işler karışıyor. Aslında çok basit değil mi? Sadece mevcut zamanın 1 ay sonrasını ekranda çıktı olarak görmek istiyoruz. Burada işlerin karışmasının en önemli sebebi, bu isteklerimizi birden fazla yöntemle yapabiliyor olmamız(Gregorian, Calendar, Date, LocalDate, ZonedDate).

Bu konuda Java bize bazı tavsiyelerde bulunuyor.

import java.util.Date;
import java.sql.*;

kütüphanelerini zaman işlemlerinde kullanmamamız gerektiğini söylüyor. Peki bunların yerine ne tercih edeceğiz? LocalDate, LocalDateTime

O zaman büyüklerimizin sözünü dinleyip değişikliklerimizi yapalım.

  • İçinde bulunduğumuz zamanı 202502111452 gibi bir formatla görüntüleme;

Legacy

    public static String getDateTime(){
        DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
        return df.format(new Date());
    }

Change

    public static String getDateTime() {
        LocalDateTime dateTime = LocalDateTime.now();
        return dateTime.format(ENUM_DATE_FORMAT.DATETIME.get());
    }
  • İki tarih arasındaki farkı gün olarak getiren metod;

Legacy

    public static Long getDayDiff(String bastar, String bittar) {
        try {
            DateFormat df = new SimpleDateFormat("yyyyMMdd");
            Date dateStart = df.parse(bastar);
            Date dateEnd = df.parse(bittar);
            return Math.round((dateEnd.getTime() - dateStart.getTime()) / (double) 86400000);
        } catch (Exception e) {
            // err
        }
        return 0L;
    }

Change

    public static Long getDayDiff(String bastar, String bittar) {
        try {
            LocalDate fromDate = LocalDate.parse(bastar, ENUM_DATE_FORMAT.DATE.get());
            LocalDate toDate =  LocalDate.parse(bittar, ENUM_DATE_FORMAT.DATE.get());
            return ChronoUnit.DAYS.between(fromDate, toDate);
        } catch (Exception e) {
            // err
        }
        return 0L;
    }
  • içinde bulunduğumuz zamanın 1 ay sonrasını görüntüleme

Legacy

    public static String getOptimeAddMonth(int add) {
        DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
        return df.format(DateUtils.addMonths(new Date(), add));
    }

Change

    public static String getOptimeAddMonth(int add) {
        LocalDateTime dateTime = LocalDateTime.now().plusMonths(add);
        return dateTime.format(ENUM_DATE_FORMAT.DATETIME.get());
    }

Yeni formatlarda Enum class kullanıldığını fark etmişsinizdir.

public enum ENUM_DATE_FORMAT {
    DATE("yyyyMMdd"),
    DATETIME("yyyyMMddHHmmss");

    private final String format;

    public DateTimeFormatter get() {
        return DateTimeFormatter.ofPattern(format);
    }

    ENUM_DATE_FORMAT(String format) {
        this.format = format;
    }
}

Date&Time API LocalDate : Sadece gün, ay, yıl bilgisiyle ilgilenir.

  • Metodları now() : Bugünü getirir. — LocalDate today = LocalDate.now(); // 2022–05–27

of() : Belirtilen bir tarih atanır. — LocalDate birthday = LocalDate.of(1996, 9, 27); // 1996–09–27

withYear() : Mevcut olan tarihin yılını değiştirir. — LocalDate changeYear = birthday.withYear(2022); // 2022–09–27

plus() minus() : Mevcut tarihten ileri geri gider — LocalDate birthdayPlus = birthday.plusDays(10); // 1996–10–07 — LocalDate birthdayMinus = birthday.minusYears(100); // 1896–10–07

getDayOfMonth() : Mevcut tarihin gününe ulaşabiliriz — int dayOfMonth = birthday.getDayOfMonth(); // 27

LocalTime : Sadece saat, dakika, saniye bilgisiyle ilgilenir.

  • Metodları now() : Anlık olarak zaman bilgisini verir — LocalTime anlik = LocalTime.now(); // 14:39:46.561287306 (çalıştırılan cihazın saat bilgisini verir)

of() : Belirtilen zaman atanır. — LocalTime ofTime = LocalTime.of(23, 59, 59); // 23:59:59

parse() : String ifade zamana dönüştürülür. — LocalTime parseTime = LocalTime.parse(“11:30”); // 11:30

getHour() : Mevcut saate ulaşabiliriz — int hour = LocalTime.now().getHour(); // 14

LocalDateTime : LocalTime ve DateTime sınıflarının birleşimidir.

  • Metodları now() : // 2019–08–07T14:45:31.556654900 of() : LocalDateTime.of(1996, 9, 27, 12, 30); // 1996–09–27T12:30 getYear(): suankitarihvezaman.getYear(); // 2022

  • Formatter LocalDateTime myDateObj = LocalDateTime.now(); DateTimeFormatter myFormatObj = DateTimeFormatter.ofPattern(“dd-MM-yyyy HH:mm:ss”); String formattedDate = myDateObj.format(myFormatObj);

ZoneId : Farklı zaman dilimleri için kullanılır.

  • Metodları ZoneId defaultZone = ZoneId.systemDefault(); // GMT ZoneId customZone = ZoneId.of(“Europe/Istanbul”); // Europe/Istanbul

ZonedDateTime : LocalDateTime gibi çalışır

  • Metodları now() : ZonedDateTime.now(); // 2022–05–30T07:16:02.048991780Z[GMT] of() ZoneId losAngeles = ZoneId.of(“America/Los_Angeles”); ZonedDateTime zonedDateTimeInAmerica = ZonedDateTime.now(losAngeles); // 2022–05–30T00:15:27.518673971–07:00[America/Los_Angeles] now.getHour() — zonedDateTimeInAmerica.getHour(); // 7

Period ve Duration — Period iki tarih arasındaki fark ile ilgilenir. Duration ise iki zaman arasındaki farkla ilgilenir.

  • Metodları 1992–02–05 ve 1995–10–17 Period between = Period.between(date1, date2); between.getDays(); // 12 (takvim günü farkı)

Temporal Adjuster — Ayın ilk günü, bir sonraki pazar, sonraki ayın ilk günü, sonraki yılın ilk günü,

  • Metodları LocalDate localDate = LocalDate.now(); LocalDate firstSunday = localDate.with(TemporalAdjusters.firstDayOfMonth()).with(TemporalAdjusters.next(DayOfWeek.SUNDAY)); firstSunday; // 2022–05–08 (ayın ilk gününü seç bir sonraki pazar gününe git)

LocalDate nextThursday = localDate.with(TemporalAdjusters.next(DayOfWeek.THURSDAY)); nextThursday; // 2022–06–02 (bir sonraki perşembe)

Umarım faydalı olmuştur.

Tavsiyelerinizi yorumlarda yazarsanız sevinirim, iyi çalışmalar


메타데이터
post_id
e60591bca268
slug
java-migrating-localdatetime-e60591bca268
url
https://medium.com/@hbaduk/java-migrating-localdatetime-e60591bca268
canonical_url
https://medium.com/@hbaduk/java-migrating-localdatetime-e60591bca268
author_url
https://medium.com/@hbaduk
status
ok
fetched_at
2026-07-21 01:00:30