개발자

⏱️ Cron 표현식 생성기·해석기

크론 표현식을 입력하면 한국어 한 줄 해석과 다음 실행 시각을 보여줍니다. 반대로 빌더에서 분·시·일·월·요일을 골라 표현식을 만들 수도 있습니다.

📝 평일(월~금)에 오전 9시(09:00)에 실행
0
9
*
*
요일
1-5

현재 시각을 불러오는 중…

표준 5필드 cron 기준입니다. 다음 실행 시각은 브라우저(이 기기)의 현재 시간으로 계산하며, 한국에서 접속하면 KST(UTC+9)입니다. 서버는 자체 타임존을 쓰므로 실제 환경의 TZ 설정과 다를 수 있습니다.

📚 알아두면 좋아요

cron 5필드 구조

표준 cron은 공백으로 구분된 5개 필드로 시각을 표현합니다. 왼쪽부터 분·시·일·월·요일 순서입니다.

┌─ 분 (0-59)
│ ┌─ 시 (0-23)
│ │ ┌─ 일 (1-31)
│ │ │ ┌─ 월 (1-12)
│ │ │ │ ┌─ 요일 (0-7, 0·7=일)
* * * * *
예: 0 9 * * 1-5 = 분 0, 시 9, 일 매일, 월 매월, 요일 월~금 → 평일 오전 9시. 초(second) 필드는 표준 cron에 없습니다(6필드는 Quartz·일부 라이브러리 확장).

특수문자 (* / , -) 의미

기호의미예시
*해당 필드의 모든 값시 칸의 * = 매시
*/nn 단위마다 (스텝)*/15 (분) = 0,15,30,45분
a-ba부터 b까지 범위1-5 (요일) = 월~금
a,b,c여러 값 나열 (리스트)0,30 (분) = 정각·30분
a-b/n범위 안에서 n 단위마다9-18/3 (시) = 9,12,15,18시
L(말일)·W(가까운 평일)·#(N번째 요일)·?는 표준 cron에는 없고 Quartz 등 일부 구현에만 있습니다. 이 도구는 표준 5필드(* / , -)만 처리합니다.

요일·월 별칭과 @-축약

자주 쓰는 주기는 @ 별칭으로 줄여 쓸 수 있습니다. 이 도구는 입력 시 자동으로 5필드로 풀어 해석합니다.

@hourly

0 * * * *

매시 정각

@daily

0 0 * * *

매일 자정 (=@midnight)

@weekly

0 0 * * 0

매주 일요일 0시

@monthly

0 0 1 * *

매월 1일 0시

@yearly

0 0 1 1 *

매년 1/1 0시 (=@annually)

@reboot

부팅 시 1회 (시각 계산 불가)

요일은 숫자만 표준입니다(0~7). MON·SUN 같은 영문 약어와JAN~DEC 월 약어는 일부 구현만 지원하므로, 호환을 위해 숫자 사용을 권장합니다.

일과 요일 동시 지정 시 OR 규칙

일(3번째)과 요일(5번째)을 둘 다 *가 아닌 값으로 지정하면, 표준 cron은 두 조건을 OR로 묶습니다 — 둘 중 하나라도 맞으면 실행합니다.

0 0 13 * 5 → 매월 13일 또는 매주 금요일 자정.
결과적으로 13일과 금요일이 모두 트리거되며, 13일의 금요일에만 도는 것이 아닙니다.
둘 중 하나만 쓰려면 다른 칸을 *로 두세요.
"둘 다 만족(AND)"하는 조건, 예를 들어 "13일이면서 금요일"은 cron 한 줄로 표현할 수 없습니다. 크론은 트리거만 담당하고, 실제 스크립트 첫 줄에서 요일을 다시 확인해 빠져나가는 방식이 일반적입니다.

Quartz·클라우드와 다른 점

환경필드 수요일 범위특이점
표준 cron (이 도구)50-7 (0·7=일)일·요일 OR, 초 없음
Quartz (Java)6~71-7 (1=일)초 필수, L·W·# 지원, 일·요일에 ? 필요
Spring @Scheduled60-7맨 앞에 초 필드 추가
AWS EventBridge61-7 (1=일)연도 필드, 일·요일 중 하나는 ?
Kubernetes CronJob50-7표준과 동일, UTC 기본
가장 큰 차이는 초 필드 유무요일 번호 기준입니다. Quartz·EventBridge는 요일이 1=일요일이라 표준 cron의 숫자를 그대로 옮기면 하루씩 어긋납니다. 또 클라우드 스케줄러는 보통 UTC가 기본이므로, KST 기준으로 9시간을 빼서 등록해야 합니다.

자주 묻는 질문 (FAQ)

Q1. 크론 표현식 읽는 법은?

왼쪽부터 분 · 시 · 일 · 월 · 요일 5칸으로 읽습니다. 예를 들어 30 14 * * 1은 분=30, 시=14, 일=*(매일), 월=*(매월), 요일=1(월요일) → 매주 월요일 14시 30분입니다. *는 "모든 값", */5는 "5단위마다", 1-5는 "1부터 5까지", 1,15는 "1과 15"를 뜻합니다.

Q2. 매일 특정 시간에 실행하는 크론은?

분과 시만 고정하고 나머지를 *로 둡니다. 매일 오전 9시0 9 * * *, 매일 자정0 0 * * *, 매일 오후 6시 30분30 18 * * *입니다. 시는 0~23(24시간제)으로 적습니다. 오후 2시는 14, 밤 11시는 23입니다.

Q3. 평일에만 실행하려면 어떻게 하나요?

요일 칸에 1-5(월~금)를 넣습니다. 평일 오전 9시0 9 * * 1-5입니다. 요일은 0=일요일, 1=월요일 … 6=토요일이며, 주말만 실행하려면 0,6을 씁니다. 토요일·일요일 출근일 같은 예외는 cron 한 줄로 표현하기 어려워, 보통 스크립트 안에서 공휴일을 추가로 걸러냅니다.

Q4. 0 0 * * *는 무슨 뜻인가요?

분=0, 시=0, 나머지 전부 *매일 자정(00:00)에 1회 실행입니다. 흔히 일일 배치·백업·로그 정리에 씁니다. 비슷하게 0 * * * *는 매시 정각, * * * * *는 매분 실행입니다. @daily 별칭도 같은 의미입니다.

Q5. 요일에서 0과 7의 차이는?

둘 다 일요일입니다. 표준 cron(Vixie)은 요일을 0~7로 받고, 0과 7을 모두 일요일로 취급합니다(0~6이 일~토, 7은 0의 별칭). 따라서 0 0 * * 00 0 * * 7은 동일하게 매주 일요일 자정입니다. 이 도구는 입력의 7을 내부적으로 0으로 바꿔 처리합니다.

Q6. 일과 요일을 동시에 지정하면 어떻게 되나요?

표준 cron은 OR(둘 중 하나라도 맞으면 실행)입니다. 0 0 13 * 5는 "매월 13일" 또는 "매주 금요일"에 실행되어, 13일의 금요일뿐 아니라 모든 13일과 모든 금요일에 돌아갑니다. 한쪽만 제한하려면 다른 칸을 *로 두면 됩니다. AND를 원하면 cron 한 줄로는 불가능해 스크립트 쪽에서 날짜를 다시 확인해야 합니다.

함께 쓰면 좋은 도구

📋

JSON 포맷터

JSON 정렬·압축·트리·검증

🔍

정규식 테스터

패턴 매칭·그룹·치환 미리보기

🔐

Base64 인코더/디코더

텍스트·파일·JWT Base64 변환