JSTL) 현재 날짜 / 날짜, 시간 계산

이지우·2022년 11월 23일
0
  • fmt:parseNumber 태그 이용. value의 값에 .time 지정하면
    Wed Nov 23 13:50:29 KST 2022 과 같은 날짜(문자열 타입)이
    1669179029871 과 같은 시작일 이후 ms 단위 숫자값으로 변환됨을 이용

    https://sowon-dev.github.io/2022/08/18/220818JSTL-date/

    <jsp:useBean id="now" class="java.util.Date"/>
    <fmt:parseNumber value="${now.time / (1000*60)}" var="nowfmtTime"/><!-- .time 필수 -->
    <fmt:parseNumber value="${commentVO.commentDate.time / (1000*60)}" var="commentDatefmtTime"/><!-- .time 필수 -->
    <fmt:parseNumber value="${nowfmtTime - commentDatefmtTime}" var="timeDefference"/>
    <c:choose>
     <c:when test="${timeDefference <= 10}"><!-- 10분 이하 -->
       방금 전
     </c:when>
     <c:when test="${timeDefference > 10 && timeDefference <= 60}"><!-- 1시간 이하 -->
       <fmt:parseNumber value="${timeDefference}" integerOnly="true" var="timeDefference"/>	
       ${timeDefference }분 전
     </c:when>
     <c:when test="${timeDefference > 60 && timeDefference <= 60*24}"><!-- 24시간 이하 -->
       <fmt:parseNumber value="${timeDefference / 60}" integerOnly="true" var="timeDefference"/>
       ${timeDefference }시간 전
     </c:when>
     <c:when test="${timeDefference > 60*24 && timeDefference <= 60*24*30}"><!-- 30일 이하 -->
       <fmt:parseNumber value="${timeDefference / (60*24)}" integerOnly="true" var="timeDefference"/>
       ${timeDefference }일 전
     </c:when>
     <c:when test="${timeDefference > 60*24*30 && timeDefference <= 60*24*365}"><!-- 1년 이하 -->
       <fmt:parseNumber value="${timeDefference / (60*24*30)}" integerOnly="true" var="timeDefference"/>
       ${timeDefference }월 전
     </c:when>
     <c:when test="${timeDefference > 60*24*365}">
       <fmt:parseNumber value="${timeDefference / (60*24*365)}" integerOnly="true" var="timeDefference"/>
       ${timeDefference }년 전
     </c:when>
    </c:choose>	

    참고. 한달 전의 기준을 임의로 30일로 정함. 28,30,31과 같이 구체적으로 정하려면 해당일의 달을 기준으로하는 추가적인 코드 작성 필요


  • 시간을 0으로 변경 후 날짜만으로 계산

    https://sowon-dev.github.io/2022/11/02/221103JSP-utilDatefmt/

    • project) 박스오피스 개봉일 출력 시 시간 제외하고 날짜만으로 계산 필요

      
      <!-- 개봉일 
                 https://sowon-dev.github.io/2022/11/02/221103JSP-utilDatefmt/ -->
      <jsp:useBean id="now" class="java.util.Date"/>
      <fmt:formatDate var="today" value="${now }" pattern="yyyyMMdd000000"/>	
      <fmt:parseDate var="nowfmt" value="${today }" pattern="yyyyMMddHHmmss"/>
      
      <fmt:parseNumber value="${nowfmt.time}" var="nowfmtTime"/><!-- .time 필수 -->
      <fmt:parseNumber value="${boxOfficeWithStar.openDt.time}" var="openDtfmtTime"/><!-- .time 필수 -->
      <fmt:parseNumber value="${(nowfmtTime - openDtfmtTime) / (1000*60*60*24)}" var="timeDefference"/>
      
      <c:choose>
        <c:when test="${timeDefference >= 0}">
          <div>개봉 ${timeDefference +1 }일째</div>	
        </c:when>
        <c:otherwise>
          <div>개봉 ${timeDefference +1 }일전</div>
        </c:otherwise>			
      </c:choose>		
profile
IT개발 입문합니다.

0개의 댓글