.. _workflow-date:
.. role:: raw-html(raw)
:format: html
날짜 및 시간에 대한 연산 함수
======================================
- Workflow에서 사용되는 날짜 기능에 대해 안내합니다.
* _date 키워드
- 날짜 및 시간 생성, 포맷 변경, 연산 등 날짜 관련 편의 기능을 제공합니다.
- 날짜 객체 생성 ($_date.getDate)
- 현재 시간을 가져 옵니다.
.. code-block:: javascript
// Wed Jul 02 12:00:00 KST 2025
${_date.getDate()}
- 날짜 객체 생성 ($_date.toDate)
- 문자열 또는 밀리초(long) 타입의 값을 Date 객체로 변환합니다.
- 사용법
- $_date.toDate(포맷, 날짜_문자열): 지정된 포맷의 문자열을 Date 객체로 변환합니다.
- $_date.toDate(밀리초_숫자): 1970년 1월 1일 0시 기준의 밀리초 값을 Date 객체로 변환합니다
- 예제
.. code-block:: text
// 문자열 -> Date 객체
#set($d1 = $_date.toDate("yyyy-MM-dd HH:mm:ss", "2025-07-02 14:00:00"))
// 밀리초 -> Date 객체
#set($d2 = $_date.toDate(1751432400000))
- 날짜 포맷 변경 ($_date.format)
- 사용법
- $_date.format(포맷, Date_객체)
- 예제
.. code-block:: text
#set($myDate = $_date.toDate("yyyy-MM-dd HH:mm:ss", "2025-07-02 14:00:00"))
#set($formatDate = ${_date.format("yyyy-MM-dd", $myDate)})
// 결과 : 2025-07-02
$formatDate
// yyyy-MM-dd HH:mm 형식의 문자열로 변환
${_date.format("yyyy-MM-dd HH:mm", $myDate)}
// yy/MM/dd HH:mm 형식의 문자열로 변환
${_date.format("yy/MM/dd HH:mm", $myDate)}
// 현재시간을 yyyy-MM-dd 형식의 문자열로 변환
${_date.format("yyyy-MM-dd", $_date.getDate()}
- 날짜 연산(toCalendar, add)
- 날짜를 더하거나 뺴는 등의 연산을 수행합니다.
- 연산은 Calendar 객체를 통해 이루어집니다.
- 연산 절차
1. $_date.toCalendar(Date_객체)를 사용해 Date 객체를 Calendar 객체로 변환합니다.
2. $cal.add(단위, 증감값) 메소드를 사용하여 날짜를 연산합니다.
3. 연산된 Calendar 객체를 $_date.format을 통해 원하는 형식의 문자열로 출력합니다.
4. add 메소드에서 사용하는 주요 단위 상수
.. code-block:: text
연도 : 1
월 : 2
일 : 5
시간 : 11
분 : 12
초 : 13
- 예제
.. code-block:: text
// Wed Jul 02 12:00:00 KST 2025
#set($myDate = $_date.getDate())
// myDate를 기준으로 Calendar 객체 생성
#set($cal = $_date.toCalendar($myDate))
// 10일 더하기, 5 (일) 을 10만큼 더합니다.
$cal.add(5, 10)
#set($addDate = $_date.format("yyyy-MM-dd", $cal))
// 결과: 2025-07-12
$addDate
// 중요: 새로운 연산을 위해 Calendar 객체를 원본 날짜로 다시 초기화해야 합니다.
#set($cal = $_date.toCalendar($myDate))
// 1달 빼기, 2 (월) 을 1만큼 뺍니다.
// 초기화하지 않을 시에는 최종 결과 2025-07-12 에서 1달을 뺀 2025-06-12 이 나오게 됩니다.
$cal.add(2, -1)
#set($minusMonth = $_date.format("yyyy-MM-dd", $cal))
// 결과: 2025-06-02
$minusMonth