Java Migrating LocalDateTime
Merhabalar,
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