/ 날짜 및 시간 / cron
광고 제거멤버
테마: 시스템대비: 표준

Cron 표현식 해설기

cron 표현식을 쉬운 말로 읽고, 어느 시간대에서든 다음 실행 시각을 확인하며, 표준 형태로 정리하세요.

코드 예제

내 프로젝트에 그대로 복사해서 쓰세요. 모든 예제는 해당 언어의 표준 라이브러리만 사용하므로 설치할 것이 없습니다.

최대 3개 언어에 별표를 하면 모든 도구 페이지에서 맨 앞에 표시됩니다.

JavaScript을(를) 즐겨찾기에 추가
const expand = (field, min, max) =>
  field.split(',').flatMap((part) => {
    const [range, step = '1'] = part.split('/')
    const [from, to = from] = range === '*' ? [min, max] : range.split('-').map(Number)
    return Array.from({ length: Math.floor((to - from) / Number(step)) + 1 }, (_, i) => from + i * Number(step))
  })

function matches(expression, instant) {
  const [minute, hour, dayOfMonth, month, dayOfWeek] = expression.split(' ')

  const inMonth = expand(dayOfMonth, 1, 31).includes(instant.getUTCDate())
  const inWeek = expand(dayOfWeek, 0, 7).some((day) => day % 7 === instant.getUTCDay())
  const dayMatches =
    !dayOfMonth.startsWith('*') && !dayOfWeek.startsWith('*') ? inMonth || inWeek : inMonth && inWeek

  return (
    expand(minute, 0, 59).includes(instant.getUTCMinutes()) &&
    expand(hour, 0, 23).includes(instant.getUTCHours()) &&
    expand(month, 1, 12).includes(instant.getUTCMonth() + 1) &&
    dayMatches
  )
}

console.log(matches('*/15 9-17 * * 1-5', new Date('2023-11-14T09:30:00Z')))

기능 소개

Cron 표현식을 쉬운 말로 풀어 읽고, 원하는 시간대에서 다음 실행 시각을 확인하고, 표준 형식으로 정리합니다. 표준 5개 필드 cron과 초가 포함된 Quartz 또는 Spring 방언을 지원합니다. 모든 계산은 브라우저 안에서 이루어집니다.

사용 방법

  1. 표현식을 입력하거나 붙여넣습니다. 예: */15 9-17 * * MON-FRI. @daily, @hourly 같은 단축 표기도 이해합니다. 커서가 있는 필드는 강조되고 아래에서 설명됩니다.
  2. 방언을 고릅니다. 표준 (5개 필드) 또는 Quartz / Spring(초로 시작하는 6개 또는 7개 필드)입니다.
  3. 일정을 해석할 시간대와 나열할 다음 실행 횟수를 고릅니다.
  4. 입력란 위에서 말로 풀어 쓴 설명을 읽고, 그 아래에서 다음 실행 시각을 확인합니다. 모든 cron이 이해하지는 못하는 문법은 안내로 알려 줍니다.
  5. 무작위나 일정 칩으로 시작하거나, 여러 줄로 바꿔 한 줄에 하나씩 표현식을 확인합니다.

예제

@daily                  →  0 0 * * *
*/15 9-17 * * MON-FRI   →  월요일부터 금요일까지, 오전 09:00부터 오후 05:59 사이에 15분마다

매월 둘째 월요일 정오를 나타내는 Quartz 표현식입니다.

0 0 12 ? * MON#2

알아두면 좋은 점

  • 다섯 개의 필드는 분, 시, 일, 월, 요일입니다.
  • 표준 cron은 일요일을 0으로 셉니다. Quartz와 Spring은 1로 세며, 일 필드나 요일 필드 중 한 곳에 ?가 필요합니다.
  • Cron은 그것이 실행되는 머신이나 스케줄러의 시계를 기준으로 동작하므로 해당 시간대를 선택하세요. 대개 UTC입니다.
  • Quartz의 L, W, #(마지막 날, 가장 가까운 평일, n번째 요일)을 지원합니다.
  • 읽을 수 없는 필드는 빨갛게 바뀌고, 메시지가 그 필드를 알려 줍니다.
  • 일과 요일을 모두 지정하면 둘 다 일치할 때만이 아니라 하나라도 일치하면 작업이 실행됩니다. @reboot에는 나열할 일정이 없고, 표준 cron에서 일요일을 7로 쓰거나 Quartz 문자 ?, L, W, #를 쓰면 안내가 표시됩니다.

Cron 표현식이란?

cron 표현식은 작업을 언제 실행할지 다섯 개 필드(분, 시, 일, 월, 요일)로 나타냅니다. *는 모든 값, */15는 15마다, 1-5는 범위, 1,15는 목록입니다. Quartz와 Spring은 앞에 초 필드를, 때로는 끝에 연도를 더하고 L, W, # 같은 확장도 지원합니다.

자주 묻는 질문

실행 시각은 어느 시간대를 쓰나요?

선택한 시간대입니다. cron은 그것이 동작하는 머신이나 스케줄러의 시계를 따르므로, 실제 시각을 보려면 그 시간대(대개 UTC)를 고르세요.

표준과 Quartz는 무엇이 다른가요?

표준 cron은 필드가 다섯 개이고 일요일이 0입니다. Quartz와 Spring은 여섯 또는 일곱 개이며 초로 시작하고 일요일이 1이며, 일 또는 요일 필드 중 하나에 ?가 필요합니다.

이 도구가 표현식을 어딘가로 전송하나요?

아니요. 설명과 실행 시각은 브라우저에서 계산됩니다. 입력한 내용은 저희 서버로 전송되지 않습니다.

이 도구의 변경 내역

키보드 단축키

닫기

어디서나

도구와 작업 검색
Ctrl K
이 도움말 표시
?
테마 전환
Ctrl Shift L
선택한 도구 고정(검색에서)
Ctrl P

도구에서

출력을 첫 번째 추천으로 보내기
Ctrl ↵
파일을 입력으로 열기
Ctrl O
출력 복사
Ctrl Shift C
검색 닫기esc
도구Base64 인코더 및 디코더텍스트를 Base64로 인코딩하거나 Base64를 텍스트로 디코딩합니다. 표준 및 URL 안전 알파벳을 지원합니다.인코딩JSON 포맷터 및 검증기JSON을 포맷, 압축, 검증하며 오류의 정확한 줄과 열을 알려 줍니다.포맷정규식 테스터실시간 하이라이트, 캡처 그룹, 쉬운 말 설명과 함께 JavaScript 정규식을 테스트합니다.텍스트UUID·ULID 생성기UUID v4, UUID v7, ULID를 한꺼번에 생성하거나, ID를 붙여 넣어 버전, 변형, 타임스탬프를 확인하세요.생성기Unix 타임스탬프 변환기Unix 타임스탬프와 날짜를 서로 변환합니다. 모든 시간대를 지원하며 ISO 8601, RFC 2822, 상대 시간도 보여 줍니다.날짜 및 시간해시 및 HMAC 생성기텍스트나 파일의 MD5, SHA-1, SHA-2, SHA-3, BLAKE2, BLAKE3, CRC-32 해시를 계산하고 HMAC도 선택할 수 있습니다.보안비밀번호 생성기 및 강도 검사기무작위 비밀번호, 암호 문구, PIN을 생성하거나 비밀번호가 얼마나 강한지 확인하세요.보안JWT 디코더 및 검증기JSON Web Token을 디코딩하고 만료와 클레임을 확인하며, 비밀 키나 공개 키로 서명을 검증하세요.보안CIDR 및 IP 서브넷 계산기IPv4·IPv6 네트워크의 범위, 마스크, 크기를 계산하고 서브넷으로 나누며, 무엇이 무엇을 포함하거나 겹치는지 확인하세요.네트워크Cron 표현식 해설기cron 표현식을 쉬운 말로 읽고, 어느 시간대에서든 다음 실행 시각을 확인하며, 표준 형태로 정리하세요.날짜 및 시간줄 정렬텍스트 줄을 A에서 Z, Z에서 A, 자연 순서(file2가 file10보다 앞), 코드 포인트, 숫자 또는 길이 기준으로 정렬합니다.텍스트중복 줄 제거목록에서 중복된 줄을 제거합니다. 첫 번째 또는 마지막 사본을 남기거나, 대소문자나 공백을 무시하거나, 반복되는 모든 줄을 없앨 수 있습니다.텍스트목록과 텍스트 비교두 목록을 줄 단위로 비교합니다. 둘 다에 있거나, 하나에만 있거나, 어느 쪽에든 있는 줄을 찾고, 표시된 줄 차이를 나란히 볼 수 있습니다.텍스트대소문자 변환과 슬러그텍스트를 camelCase, snake_case, kebab-case, Title Case 등으로 변환하거나 제목을 악센트 처리가 된 URL 슬러그로 바꿉니다.텍스트URL 인코딩·디코딩·분석URL용으로 텍스트를 퍼센트 인코딩·디코딩하거나, URL을 스킴·호스트·경로·쿼리로 나누고 쿼리를 표로 편집합니다.인코딩검증기: IBAN·BSN·VATIBAN, 네덜란드 BSN, 신용카드 번호, EU VAT 번호, 이메일 주소, URL, ISBN을 검증하고 실패하면 이유를 알려 줍니다. 한 줄에 값 하나.검증HTML 엔티티 인코딩·디코딩텍스트를 이름·10진·16진 엔티티로 HTML용으로 이스케이프하거나 &, é 같은 엔티티를 다시 문자로 바꿉니다.인코딩문자열 이스케이프와 언이스케이프JSON·JavaScript 문자열, SQL 문자열, CSV 필드, 정규식 또는 셸 단어에 맞게 텍스트를 이스케이프하거나 이스케이프를 되돌립니다.인코딩EAN·UPC·GTIN 체크 디지트EAN-8, EAN-13, UPC-A, GTIN-14의 체크 디지트를 검증하고 빠진 자리를 계산하며, GS1 접두사로 국가를 읽고 ISBN-10과 EAN-13을 서로 변환합니다. 한 줄에 코드 하나.검증테스트 데이터 생성기테스트용 IBAN, BSN, EAN 바코드, EU 부가세 번호를 한꺼번에 생성합니다. 검증은 통과하지만 누구의 것도 아닙니다.생성기SQL 포매터·압축기SQL을 절마다 줄을 나눠 정리하거나 한 줄로 압축합니다. MySQL, PostgreSQL, SQLite, SQL Server, BigQuery를 지원합니다.포맷진법 변환기2진수·8진수·10진수·16진수와 2~36의 모든 진법 사이에서 숫자를 변환합니다. 큰 수, 2의 보수, 비트 보기 지원.인코딩YAML·TOML·JSON 변환기JSON, YAML, TOML을 서로 변환하거나 문서를 검증하고 정리합니다. 모든 오류에 줄과 열을 표시합니다.포맷CSV·JSON 변환기CSV를 JSON 배열로, JSON을 CSV로 변환합니다. 구분 기호를 자동으로 감지하고 세미콜론과 소수점 쉼표를 쓰는 Excel 파일도 읽습니다.데이터Glob 및 .gitignore 테스터경로 목록에 glob 패턴과 .gitignore 규칙을 시험해 어떤 경로가 어떤 규칙으로 일치하는지 확인합니다.텍스트색상 변환기색상을 HEX, RGB, HSL, HWB, OKLCH로 변환하고, 배경과의 WCAG 대비를 확인하고, Material 3 톤 팔레트도 만들 수 있습니다.포맷chmod 계산기Unix 파일 권한을 8진수(755), 문자(rwxr-xr-x), ls -l, chmod 절 사이에서 변환합니다. 체크박스 격자와 setuid, setgid, sticky 비트를 지원합니다.보안User-Agent 분석기User-Agent 문자열에서 브라우저, 엔진, OS, 기기 종류와 봇 여부를 읽어 줍니다. 비워 두면 내 브라우저를 읽습니다.네트워크cURL을 코드로 변환cURL 명령을 붙여 넣으면 같은 요청을 fetch, Axios, Python requests, Go, PHP 코드로 보여 줍니다. 아무것도 실행하거나 전송하지 않습니다.네트워크마크다운 미리보기마크다운을 쓰면 입력하는 대로 렌더링해 보여 주고 HTML도 복사할 수 있습니다. 원시 HTML은 텍스트로 표시되고 링크는 검사되므로 미리보기에서 아무것도 실행되지 않습니다.포맷바코드·QR 코드 생성기QR 코드, EAN-13, UPC-A, Code 128, ITF-14, Data Matrix를 만들어 SVG나 PNG로 저장하거나, 이미지에서 코드를 읽습니다.생성기페이지변경 내역릴리스별 변경 사항페이지소개codeknife.dev가 무엇이며 누가 만드는지페이지아이디어개선안을 제안하고 다른 방문자의 아이디어에 투표하세요.페이지개인정보브라우저를 떠나는 것과 저장되는 것페이지접근성적합성, 알려진 제한 사항, 문제 신고 방법페이지멤버십광고 제거와 한도 상향페이지동작