반응형
event기간에 따라 문구를 변경하고 싶다는 요청사항이 들어왔다.
1. event 종료 전이지만 closed상태에서의 문구
2. event 종료 후 closed상태에서의 문구
이렇게 두 가지로 케이스를 분리해달라고 했다.
그래서 그냥 현재시간을 model에 담아서 client단에서 비교하게 구현하려고 했다.
// java
...
Date timestamp = new Date(System.currentTimeMillis());
model.addAttribute("timestamp", timestamp);
...
// js
...
console.log("${timestamp}");
console.log("${EvnetEndDate}");
<c:choose>
<c:when test="${ EvnetEndDate > timestamp}">
popup_text("<spring:message code="${CODE}.eventDateException.msg" />");
</c:when>
<c:otherwise>
popup_text("<spring:message code="${CODE}.eventDateExpired.msg" />");
</c:otherwise>
</c:choose>
...
하지만 format이 달라 비교를 할 수 없다.
찾아보니 .before()를 이용해 Controller단에서 비교 가능하다고 한다.
// timestamp를 Date 객체로 변환
Date currentDate = new Date(System.currentTimeMillis());
// eventEndDate가 Date 객체라고 가정하고, 비교하기
// eventEndDate를 Date 객체로 가정하면, 아래와 같이 비교 가능
if (currentDate.before(eventEndDate)) {
// 현재 날짜가 eventEndDate보다 이전일 때의 처리
}
// 또는 eventEndDate가 문자열인 경우, 문자열을 Date 객체로 파싱한 후 비교
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 날짜 형식은 eventEndDate에 맞춰서 설정
Date eventEndDateParsed = sdf.parse(eventEndDate);
if (currentDate.before(eventEndDateParsed)) {
// 현재 날짜가 eventEndDate보다 이전일 때의 처리
}
하지만 원래 하려던 방향대로 Client에서 비교 가능하게 하려면 먼저 eventEndDate와 format을 맞춰주어야 했다.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
// 현재 시간을 밀리초 단위로 가져옴
long currentTimeMillis = System.currentTimeMillis();
// 밀리초 값을 Date 객체로 변환
Date currentDate = new Date(currentTimeMillis);
// 원하는 날짜 형식 설정
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// Date 객체를 설정된 형식의 문자열로 변환
String formattedDate = sdf.format(currentDate);
System.out.println("Current date and time in format yyyy-MM-dd HH:mm:ss: " + formattedDate);
}
}
+ ) Java의 SimpleDateFormat에서는 표현식
yyyy : 연도
MM : 월
dd : 일
E : 요일
HH : 시간(24시간) ( cf. hh는 12시간 )
mm : 분
ss : 초
요일의 표시하는 E 문자 역시 포맷 문자열에 몇 개의 사용하는지에 따라 형태(예: 축약형, 전체 이름)가 달라짐
Date currentTime = new Date(System.currentTimeMillis());
String timeStamp = "";
if (locale.getLanguage().equals("ko")) {
SimpleDateFormat simpleDateFormat
= new SimpleDateFormat("yyyy년 MM월 dd일 (E) HH:mm", new Locale("ko", "KR"));
timeStamp = simpleDateFormat.format(currentTime);
} else {
SimpleDateFormat simpleDateFormat
= new SimpleDateFormat("HH:mm, EEEE, MMMM dd'th' yyyy", Locale.ENGLISH);
timeStamp = simpleDateFormat.format(currentTime);
}
++ ) date형식의 비교
Date currentTime = new Date(System.currentTimeMillis());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
Date chkDate = simpleDateFormat.parse([String 타입 데이터]);
if(date.before(currentTime)){
// date가 currentTime보다 이른 시간일 경우 실행
// e.g. date : 2024.03.17 / currentTime : 2024.03.18
}
if(date.after(currentTime)){
// date가 currentTime보다 나중 시간일 경우 실행
// e.g. date : 2024.03.19 / currentTime : 2024.03.18
}
반응형
'Backend > JAVA' 카테고리의 다른 글
[Algorithm] 데일리 백준 (0) | 2024.04.03 |
---|---|
[Algorithm] 데일리 백준 (2) | 2024.04.02 |
Response로 Json 생성 (0) | 2024.02.19 |
Gradle-JDK이슈 (0) | 2024.02.16 |
01/30 회고 (0) | 2024.01.30 |