날짜정보만 출력
//현재 날짜 정보를 저장한 LocalDate 객체 리턴
LocalDate currentDate = LocalDate.now();
// result : 2022-10-25
// 파라미터로 주어진 날짜 정보를 저장한 LocalDate 객체 리턴
LocalDate targetDate = LocalDate.of(2023,10,16);
//결과 : 2023-10-16
시간 정보만 출력
// 로컬의 현재 시간 정보를 저장한 LocalDate 객체 리턴
LocalTime currentTime = LocalTime.now();
// 결과 : 18:34:22
// 파라미터로 주어진 시간 정보를 저장한 LocalTime 객체 리턴
LocalTime targetTime = LocalTime.of(01,17,44,22);
// 끝에 4번째 매개변수는 nanoSecond이고 선택 값(굳이 쓰지 않아도 됨)
// 결과 : 01:17:44.0000022
날짜, 시간 정보 모두 출력
// 로컬의 현재 날짜와 시간 정보
LocalDateTime currentDateTime = LocalDateTime.now();
// 결과 : 2022-10-25T01:47:58:22.000003323
LocalDateTime targetDateTime = LocalDateTime.of(2022, 11, 12, 12, 32,22,3333);
// 여기도 second,nanoSecond은 선택
// 결과 : 2022-11-12T12:32:22.000003333
LocalDateTime을 몇분 전, 몇시간 전 이렇게 형식 변환하는 함수를 만들었다.
Chrono.java
public class Chrono {
public static long dPlus(LocalDateTime dayBefore) {
return ChronoUnit.DAYS.between(dayBefore, LocalDateTime.now());
}
public static long dMinus(LocalDateTime dayAfter) {
return ChronoUnit.DAYS.between(dayAfter, LocalDateTime.now());
}
public static String timesAgo(LocalDateTime dayBefore) {
long gap = ChronoUnit.MINUTES.between(dayBefore, LocalDateTime.now());
String word;
if (gap == 0){
word = "방금 전";
}else if (gap < 60) {
word = gap + "분 전";
}else if (gap < 60 * 24){
word = (gap/60) + "시간 전";
}else if (gap < 60 * 24 * 10) {
word = (gap/60/24) + "일 전";
} else {
word = dayBefore.format(DateTimeFormatter.ofPattern("MM월 dd일"));
}
return word;
}
public static String customForm(LocalDateTime date) {
return date.format(DateTimeFormatter.ofPattern("MM월 dd일"));
}
}
사용 예
PostResponseDto
@Builder
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class PostResponseDto {
private Long postId;
private String accountName;
private String title;
private String contents;
private String tag;
private List<CommentResponseDto> comments;
private int postLike;
private String createdAt;
private String modifiedAt;
private String img;
public PostResponseDto(Post post, List<CommentResponseDto> commentResponseDtos) {
this.postId = post.getPostId();
this.accountName = post.getAccount().getAccountName();
this.title = post.getTitle();
this.contents = post.getContents();
this.tag = post.getTag();
this.comments = commentResponseDtos;
this.postLike = post.getPostLikeCount();
this.createdAt = Chrono.timesAgo(post.getCreatedAt());
this.modifiedAt = Chrono.timesAgo(post.getModifiedAt());
this.img = post.getImg();
}
}
createdAt, modifiedAt 시간을 표기할 때 timesAgo 함수를 사용하여 표현하였다.
방금 작성한 글은 방금전, 1분 전에 작성한 글은 1분 전 이렇게 표기된다.
누가 만들었는지 깔끔하네요!