원하는 결과는 LocalDate나 , LocalDateTime으로 확인 할 수 있었습니다.
package com.test;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.attribute.FileTime;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Calendar;
import java.util.Date;
public class DateTest {
public static void main(String[] args) throws Exception {
//파일 생성일시는 2024-01-28 10:14:07
FileTime creationTime = (FileTime)Files.getAttribute(new File("D:/text23.txt").toPath() , "creationTime");
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat parseFmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = parseFmt.parse(
String.format("%s 23:59:59",fmt.format(creationTime.toMillis()))
);
// Calendar로 Date 연산 시에 -> 2023-12-30 23:59:59
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DATE, -1);
System.out.println(parseFmt.format(calendar.getTime()));
// LocalDate로 연산 시에 - 원하는 예상 결과 출력 됨 2024-01-27 23:59:59
LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
localDateTime = localDateTime.minusDays(1);
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
System.out.println(parseFmt.format(Date.from(instant)));
}
}