시간 단위 변환 기준: 초·밀리초·나노초부터 날짜 계산까지

반응형

초보다 작은 시간은 SI 접두어를 붙여 정확히 표현할 수 있다. 1 ms = 10⁻³ s, 1 μs = 10⁻⁶ s, 1 ns = 10⁻⁹ s처럼 세 자리씩 작아진다.

반면 월과 년은 고정된 초로 바꾸면 안 된다. 월은 28~31일이고 윤년은 366일이기 때문이다. 예전에는 평균 월·평균 년을 고정값처럼 한 표에 넣었는데, 다시 확인해보니 정밀한 시간 단위와 달력 기간을 구분하는 것이 먼저였다.

1초보다 작은 단위의 순서

국제단위계에서 시간의 기본 단위는 초(second)이고 기호는 s다. 초보다 작은 값은 SI 접두어로 나타낸다.

단위 기호 초로 표현 지수
밀리초 ms 0.001초 10⁻³ s
마이크로초 μs 0.000001초 10⁻⁶ s
나노초 ns 0.000000001초 10⁻⁹ s
피코초 ps 0.000000000001초 10⁻¹² s
펨토초 fs 0.000000000000001초 10⁻¹⁵ s
아토초 as 0.000000000000000001초 10⁻¹⁸ s
젭토초 zs 10⁻²¹초 10⁻²¹ s
욕토초 ys 10⁻²⁴초 10⁻²⁴ s
론토초 rs 10⁻²⁷초 10⁻²⁷ s
퀙토초 qs 10⁻³⁰초 10⁻³⁰ s

론토(ronto, r)와 퀙토(quecto, q)는 2022년 국제도량형총회에서 추가됐다. 예전 표가 욕토초에서 끝나는 경우가 많은 이유다.

성능을 다룰 때는 단위 하나가 결과를 크게 바꾼다. 예를 들어 1밀리초는 1마이크로초의 1,000배이고, 1마이크로초는 1나노초의 1,000배다. 숫자만 비교하기 전에 단위를 같은 기준으로 맞춰야 한다.

분·시간·일은 몇 초인가

분, 시간, 일은 SI 단위는 아니지만 SI와 함께 사용하도록 인정된 시간 단위다. 다음 변환은 고정값으로 계산할 수 있다.

단위 권장 기호 초로 변환
1분 min 60초
1시간 h 3,600초
1일 d 86,400초
1주 단위 이름을 그대로 표기 604,800초

분의 기호는 m이 아니라 min이다. m은 SI에서 미터를 뜻하고, SI 접두어로는 밀리(milli)를 나타낼 때도 사용된다. 문맥에 기대기보다 min, h, d처럼 구분해 쓰는 편이 안전하다.

월과 년을 초로 바꿀 때 주의할 점

1개월 = 2,629,746초, 1년 = 31,556,952초처럼 적힌 표를 볼 수 있다. 이 값은 365.2425일을 사용하는 평균 그레고리력 연도를 기준으로 계산한 평균값이다.

실제 달력 계산에서는 그대로 사용할 수 없다.

  • 한 달은 28일, 29일, 30일 또는 31일이다.
  • 평년은 365일, 윤년은 366일이다.
  • 시작 날짜와 종료 날짜, 시간대, 일광절약시간 적용 여부에 따라 경과 시간이 달라질 수 있다.

따라서 성능 측정이나 타임아웃처럼 정확한 지속 시간을 다룰 때는 초를 사용하고, 결제일·만료일처럼 달력상의 기간을 다룰 때는 날짜 연산을 사용해야 한다. 평균 한 달을 고정 초로 바꾸는 방식은 통계적 추정에는 쓸 수 있지만 일정 계산에는 적합하지 않다.

초를 주·일·시간·분으로 나누는 파이썬 예제

고정 길이 단위만 사용하면 divmod()로 안전하게 분해할 수 있다.

def decompose_seconds(total_seconds: int) -> dict[str, int]:
    if total_seconds < 0:
        raise ValueError("total_seconds must be non-negative")

    units = [
        ("weeks", 7 * 24 * 60 * 60),
        ("days", 24 * 60 * 60),
        ("hours", 60 * 60),
        ("minutes", 60),
        ("seconds", 1),
    ]

    result = {}
    remaining = total_seconds

    for name, unit_seconds in units:
        result[name], remaining = divmod(remaining, unit_seconds)

    return result


print(decompose_seconds(987_654))

이 함수에 월과 년을 넣지 않은 이유가 중요하다. 월·년을 계산해야 한다면 정수 초를 나누는 대신 실제 시작 날짜를 기준으로 달력을 계산해야 한다.

어떤 단위를 선택하면 좋을까

  • 사용자 응답 시간은 상황에 따라 초 또는 밀리초로 표현한다.
  • 애플리케이션 내부 지연은 밀리초·마이크로초 단위가 자주 쓰인다.
  • 네트워크와 시스템 성능 분석에서는 마이크로초·나노초까지 내려갈 수 있다.
  • 사람의 일정과 계약 기간은 초 환산보다 달력 날짜를 사용한다.
  • 값을 비교하거나 더할 때는 먼저 같은 단위로 변환한다.

시간 단위 표를 외우는 것보다 고정된 지속 시간인가, 달력상의 기간인가를 먼저 구분하는 편이 실수를 줄인다.

참고 자료

반응형
KEEP READING
카테고리 전체 보기 →

댓글