날짜 및 시간 처리하기 with Luxon#
Luxon은 날짜 및 시간 작업을 용이하게 해주는 JavaScript 라이브러리입니다. Luxon 사용에 대한 자세한 내용은 Luxon의 문서를 참조하세요.
n8n은 노드 간에 날짜를 문자열로 전달하므로 이를 구문 분석해야 합니다. Luxon은 이를 쉽게 만들어줍니다.
Python 지원
Luxon은 JavaScript 라이브러리입니다. n8n에 의해 생성된 두 개의 편리한 변수는 Code 노드에서 Python을 사용할 때 사용할 수 있지만, 그 기능은 제한적입니다:
- 이러한 변수에서 Luxon 작업을 수행할 수 없습니다. 예를 들어,
$today.minus(...)
에 대한 Python에 해당하는 것이 없습니다. - Luxon으로 날짜 문자열 변환과 같은 일반적인 Luxon 기능은 Python 사용자에게는 제공되지 않습니다.
변수#
n8n은 Luxon을 사용하여 두 개의 사용자 정의 변수를 제공합니다:
now
: 현재 타임스탬프를 포함하는 Luxon 객체.DateTime.now()
에 해당합니다.today
: 현재 타임스탬프를 포함하며, 날짜로 내림한 Luxon 객체.DateTime.now().set({ hour: 0, minute: 0, second: 0, millisecond: 0 })
에 해당합니다.
이 변수는 문자열로 변환될 때 서로 다른 시간 형식을 반환할 수 있음을 유의하십시오. 이것은 Luxon의 DateTime.now()
와 동일한 동작입니다.
1 2 3 4 5 6 |
|
1 2 3 4 5 6 |
|
1 2 3 4 5 6 |
|
n8n은 날짜 표현식의 데이터 변환을 지원하는 내장 편리한 함수를 제공합니다. 더 많은 정보는 데이터 변환 함수 | 날짜를 참조하세요.
n8n의 날짜 및 시간 동작#
다음 사항에 유의하십시오:
- 워크플로 내에서 n8n은 노드 간에 날짜 및 시간을 문자열로 변환합니다. 이는 다른 노드의 날짜 및 시간에 대해 산술 연산을 수행할 때 염두에 두어야 합니다.
- 순수 JavaScript에서는
new Date('2019-06-23')
를 사용하여 문자열을 날짜로 변환할 수 있습니다. Luxon에서는DateTime.fromISO('2019-06-23')
또는DateTime.fromFormat("23-06-2019", "dd-MM-yyyy")
와 같이 형식을 명시적으로 지정하는 함수를 사용해야 합니다.
n8n에서 시간대 설정하기#
Luxon은 n8n 시간대를 사용합니다. 이 값은 다음 중 하나입니다:
- 기본값:
America/New York
GENERIC_TIMEZONE
환경 변수를 사용하여 설정된 커스텀 시간대- 워크플로우 설정에서 구성된 개별 워크플로우의 커스텀 시간대
일반 작업#
이 섹션에서는 몇 가지 일반적인 작업에 대한 예를 제공합니다. 더 많은 예제와 상세한 가이드는 Luxon의 공식 문서에서 확인할 수 있습니다.
날짜 문자열을 Luxon으로 변환#
날짜 문자열 및 기타 날짜 형식을 Luxon DateTime 객체로 변환할 수 있습니다. 표준 형식과 임의의 문자열에서 변환할 수 있습니다.
Luxon DateTime과 JavaScript Date의 차이
바닐라 JavaScript에서는 new Date('2019-06-23')
로 문자열을 날짜로 변환할 수 있습니다. Luxon에서는 형식을 명시적으로 지정하는 함수를 사용해야 하며, 예를 들어 DateTime.fromISO('2019-06-23')
또는 DateTime.fromFormat("23-06-2019", "dd-MM-yyyy")
를 사용해야 합니다.
지원되는 표준 기술 형식으로 날짜가 있는 경우:#
대부분의 날짜는 fromISO()
를 사용합니다. 이는 ISO 8601 문자열로부터 Luxon DateTime을 생성합니다. 예를 들어:
1 |
|
1 |
|
Luxon의 API 문서에서는 fromISO에 대한 자세한 정보를 제공합니다.
Luxon은 다양한 형식에 대한 변환 처리를 위한 함수를 제공합니다. Luxon의 기술 형식 파싱 가이드를 참조하세요.
표준 형식을 사용하지 않는 문자열로 날짜가 있는 경우:#
Luxon의 Ad-hoc parsing을 사용하세요. 이를 위해서는, 문자열과 형식을 설명하는 토큰 세트를 제공하는 fromFormat()
함수를 사용합니다.
예를 들어, n8n의 창립일인 2019년 6월 23일이 23-06-2019
형식으로 되어 있습니다. 이를 Luxon 객체로 변환하고자 합니다:
1 |
|
1 |
|
Ad-hoc 파싱을 사용할 때는 Luxon의 제한 사항에 대한 경고를 유의하세요. 예기치 않은 결과가 발생하면 디버깅 가이드를 시도해 보세요.
오늘로부터 n일 얻기#
오늘로부터 며칠 전이나 후의 날짜를 가져옵니다.
예를 들어, 필드를 현재 날짜보다 7일 전의 날짜를 항상 보여주도록 설정하고 싶다면.
식 편집기에 다음을 입력합니다:
1 |
|
2019년 6월 23일에, 이는 [Object: "2019-06-16T00:00:00.000+00:00"]
를 반환합니다.
이 예제는 편리함을 위해 n8n의 사용자 정의 변수 $today
를 사용합니다. 이는 DateTime.now().set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).minus({days: 7})
와 동등합니다.
예를 들어, 현재 날짜보다 7일 전의 날짜를 포함하는 변수를 원한다면.
코드 편집기에 다음을 입력합니다:
1 |
|
2019년 6월 23일에, 이는 [Object: "2019-06-16T00:00:00.000+00:00"]
를 반환합니다.
이 예제는 편리함을 위해 n8n의 사용자 정의 변수 $today
를 사용합니다. 이는 DateTime.now().set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).minus({days: 7})
와 동등합니다.
더 자세한 정보와 예제는 다음을 참조하세요:
- Luxon's 수학 가이드
- 그들의 DateTime 더하기 및 DateTime 빼기 API 문서
사람이 읽을 수 있는 날짜 만들기#
오늘로부터 n일 얻기에서 예제는 현재 날짜보다 7일 전의 날짜를 가져와 [Object: "yyyy-mm-dd-T00:00:00.000+00:00"]
(식 표현의 경우) 또는 yyyy-mm-dd-T00:00:00.000+00:00
(코드 노드에서)으로 반환합니다. 이를 더 읽기 쉽게 만들기 위해 Luxon의 형식 함수들을 사용할 수 있습니다.
예를 들어, 날짜를 DD/MM/YYYY 형식으로 포맷하여 2019년 6월 23일에 23/06/2019
로 반환되도록 할 수 있습니다.
이 식은 오늘로부터 7일 전의 날짜를 얻고 이를 DD/MM/YYYY 형식으로 변환합니다.
1 |
|
1 |
|
형식을 변경할 수 있습니다. 예를 들어:
1 |
|
2019년 6월 23일에, 이는 "16 June 2019"를 반환합니다.
1 |
|
2019년 6월 23일에, 이는 "16 June 2019"를 반환합니다.
Luxon의 toLocaleString (사람을 위한 문자열) 가이드를 참조하여 더 많은 정보를 확인하세요.
두 날짜 사이의 시간 얻기#
두 날짜 사이의 시간을 얻으려면 Luxon의 diffs 기능을 사용하십시오. 이는 한 날짜에서 다른 날짜를 빼고 지속 시간을 반환합니다.
예를 들어 두 날짜 사이의 개월 수를 구합니다:
1 |
|
이 결과는 [Object: {"months":1}]
입니다.
1 |
|
이 결과는 {"months":1}
입니다.
자세한 정보는 Luxon의 Diffs를 참조하십시오.
더 긴 예제: 크리스마스까지 며칠 남았나요?#
이 예제는 여러 Luxon 기능을 통합하고 JMESPath를 사용하며 몇 가지 기본 문자열 조작을 수행합니다.
시나리오: 12월 25일까지 카운트다운을 원합니다. 매일 크리스마스까지 남은 일수를 알려주어야 합니다. 내년을 위해 업데이트할 필요가 없으며 매년 원활하게 작동해야 합니다.
1 |
|
이 출력은 "There are <number of days> days to Christmas!"
입니다. 예를 들어, 3월 9일에는 "There are 291 days to Christmas!"가 출력됩니다.
표현식이 수행하는 작업에 대한 자세한 설명:
{{
: 표현식의 시작을 나타냅니다."There are "
: 문자열.+
: 두 문자열을 연결하는 데 사용됩니다.$today.diff()
: 이는 두 날짜 사이의 시간 얻기 예제와 유사하지만 n8n의 커스텀$today
변수를 사용합니다.DateTime.fromISO($today.year + '-12-25'), 'days'
: 이 부분은$today.year
를 사용하여 현재 연도를 가져오고 이를 ISO 문자열로 변환한 다음 월과 날짜와 함께 전체 ISO 문자열을 Luxon DateTime 데이터 구조로 변환합니다. 또한 Luxon에 일 단위의 지속 시간을 원한다는 것을 알려줍니다.toObject()
는 diff() 결과를 더 유용한 객체로 변환합니다. 이 시점에서 표현식은[Object: {"days":-<number-of-days>}]
를 반환합니다. 예를 들어, 3월 9일에는[Object: {"days":-291}]
입니다..days
는 JMESPath 구문을 사용하여 객체에서 일수만 검색합니다. n8n과 함께 JMESPath를 사용하는 방법에 대한 자세한 내용은 JMESpath 문서를 참조하십시오. 이는 크리스마스까지의 일수를 음수로 제공합니다..toString().substring(1)
는 숫자를 문자열로 변환하고-
를 제거합니다.+ " days to Christmas!"
: 또 다른 문자열이며, 이전 문자열에 연결하기 위해+
를 사용합니다.}}
: 표현식의 끝을 나타냅니다.
1 |
|
이 출력은 "There are <number of days> days to Christmas!"
입니다. 예를 들어, 3월 9일에는 "There are 291 days to Christmas!"가 출력됩니다.
코드가 수행하는 작업에 대한 자세한 설명:
"There are "
: 문자열.+
: 두 문자열을 연결하는 데 사용됩니다.$today.diff()
: 이는 두 날짜 사이의 시간 얻기 예제와 유사하지만 n8n의 커스텀$today
변수를 사용합니다.DateTime.fromISO($today.year + '-12-25'), 'days'
: 이 부분은$today.year
를 사용하여 현재 연도를 가져오고 이를 ISO 문자열로 변환한 다음 월과 날짜와 함께 전체 ISO 문자열을 Luxon DateTime 데이터 구조로 변환합니다. 또한 Luxon에 일 단위의 지속 시간을 원한다는 것을 알려줍니다.toObject()
는 diff() 결과를 더 유용한 객체로 변환합니다. 이 시점에서 표현식은[Object: {"days":-<number-of-days>}]
를 반환합니다. 예를 들어, 3월 9일에는[Object: {"days":-291}]
입니다..days
는 JMESPath 구문을 사용하여 객체에서 일수만 검색합니다. n8n과 함께 JMESPath를 사용하는 방법에 대한 자세한 내용은 JMESpath 문서를 참조하십시오. 이는 크리스마스까지의 일수를 음수로 제공합니다..toString().substring(1)
는 숫자를 문자열로 변환하고-
를 제거합니다.+ " days to Christmas!"
: 또 다른 문자열이며, 이전 문자열에 연결하기 위해+
를 사용합니다.