Study: Software(SW)/SW: Etc...

[SW] IT μ‹œμŠ€ν…œμ—μ„œ μ‹œκ°„μ˜ ν‘œν˜„: epoch time, Unix/POSIX time, time stamp...

DrawingProcess 2022. 8. 17. 13:02
λ°˜μ‘ν˜•
πŸ’‘ λ³Έ λ¬Έμ„œλŠ” 'IT μ‹œμŠ€ν…œμ—μ„œ μ‹œκ°„μ˜ ν‘œν˜„'에 λŒ€ν•΄ 정리해놓은 κΈ€μž…λ‹ˆλ‹€.
ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λ‹€λ³΄λ©΄ epoch time, Unix/POSIX time, time stamp와 같이 λ‹€μ–‘ν•œ μ‹œκ°„ κ΄€λ ¨ μš©μ–΄λ₯Ό μ ‘ν•˜κ²Œ λ©λ‹ˆλ‹€. 이λ₯Ό κ΅¬λΆ„ν•˜κ³  μ‚¬μš©ν•˜λŠ” 상황과 μš©λ‘€λ₯Ό μ •λ¦¬ν•˜μ˜€μœΌλ‹ˆ μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

1. IT μ‹œμŠ€ν…œμ—μ„œ μ‹œκ°„μ˜ ν‘œν˜„

  • λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž˜λ° 언어와 λ°μ΄ν„°λ² μ΄μŠ€μ—λŠ” ν˜„μž¬ μ‹œκ°„μ„ λ‚˜νƒ€λ‚΄λŠ” ν•¨μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. 
  • 이 μ‹œκ°„ μ •λ³΄λŠ” 물리적인 μž₯λΉ„μ˜ λ‚΄λΆ€ 타이머 ν˜Ήμ€ 인터넷을 ν†΅ν•œ GMT μ‹œκ°„ μˆ˜μ‹  λ“±μ˜ 방법을 μ‚¬μš©ν•©λ‹ˆλ‹€. 
  • Windows 운영 μ²΄μ œμ™€ 같은 μ†Œν”„νŠΈμ›¨μ–΄μ—μ„œλŠ” λ‚΄λΆ€ νƒ€μ΄λ¨Έμ˜ 변경이 κ°€λŠ₯ν•˜μ§€λ§Œ, μž„λ² λ””λ“œ μž₯비에 ν¬ν•¨λœ ν΄λŸ­μ—μ„œλŠ” 생산 μ‹œμ μ— κ³ μ •λœ 값을 λ³€κ²½ν•˜μ§€ λͺ»ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
  • ​이토둝 μ‚¬λžŒμ΄ 이해할 수 μžˆλŠ”(human readable) ν˜•νƒœ(연도/μ›”/일/μ‹œ/λΆ„/초) 둜 μ‹œκ°„μ„ λ‚˜νƒ€λ‚΄λŠ” κΈ°λŠ₯이 μžˆμ§€λ§Œ, ν”„λ‘œκ·Έλž˜λ°μ΄λ‚˜, IT μ‹œμŠ€ν…œμ—μ„œ μ‚¬μš©μ„ μœ„ν•΄ μ‚¬λžŒμ΄ 이해할 수 μ—†λŠ” λ‚œν•΄ν•œ κΈ΄ 숫자둜 ν‘œν˜„λœ ν˜•νƒœλ„ μžˆμŠ΅λ‹ˆλ‹€. Unix Time, POSIX Time, Epoch Time λ˜ν•œ 이에 ν•΄λ‹Ήν•©λ‹ˆλ‹€.
    • μ—¬κΈ°μ„œ epoch μ΄λž€ 단어λ₯Ό λ²ˆμ—­ν•˜μžλ©΄, μ€‘μš”ν•œ μ‚¬κ±΄μ΄λ‚˜ λ³€ν™”κ°€ μžˆμ—ˆλ˜ μ‹œλŒ€(era)λ₯Ό μ˜λ―Έν•˜λŠ”λ°, Unix와 POSIX λ“±μ˜ μ‹œμŠ€ν…œμ—μ„œ λ‚ μ§œμ™€ μ‹œκ°„μ˜ 흐름을 λ‚˜νƒ€λ‚Ό λ•Œ 기쀀을 μ‚ΌλŠ” μ‹œκ°„(00:00:00 UTC on January 1, 1970)을 λ‚˜νƒ€λ‚΄λŠ” λ‹¨μ–΄μž…λ‹ˆλ‹€.
    • ​Epochλ‘œλΆ€ν„° ν˜„μž¬κΉŒμ§€μ˜ 흐λ₯Έ μ‹œκ°„μ„ 양적인 초 λ‹¨μœ„λ‘œ ν‘œκΈ°ν•˜λ©΄ timestamp라 ν•˜λ©°, 10개의 λ‹¨μœ„κ°€ ν•„μš”ν•˜λ©°, μ‹œκ°„μ˜ λ‹¨μœ„λŠ” UTC둜 ν†΅μΌν•˜μ˜€κΈ° λ•Œλ¬Έμ— μ‹œμ°¨μ˜ 영ν–₯을 λ°›μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.​

2. νƒ€μž„μŠ€νƒ¬ν”„λŠ” μ–Έμ œ μ“°μΌκΉŒ?

2.1 νƒ€μž„μŠ€νƒ¬ν”„ κΈ°μ€€

  • νƒ€μž„μŠ€νƒ¬ν”„λŠ” μ–΄λŠ μ‹œμ μ— 데이터가 μ‘΄μž¬ν–ˆλ‹€λŠ” 사싀을 증λͺ…ν•˜κΈ° μœ„ν•΄ νŠΉμ • μœ„μΉ˜μ— ν‘œμ‹œν•˜λŠ” μ‹œκ°μž…λ‹ˆλ‹€.
    • κΈ°μ€€ μ‹œκ°(epoch): 00:00:00 UTC on January 1, 1970
  • 1970λ…„ 1μ›” 1일 μžμ •μ„ 0으둜 μ‹œμž‘μœΌλ‘œ νŠΉμ • μ‹œμ κΉŒμ§€ μ–Όλ§ˆλ‚˜ λ§Žμ€ 초(second) λ‹¨μœ„μ˜ μ‹œκ°„μ΄ μ§€λ‚¬λŠ”μ§€λ₯Ό 톡해 νŠΉμ • μ‹œμ μ„ ν‘œκΈ°ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.
  • 1970λ…„ 1μ›” 1일 μžμ • μ΄μ „μ˜ μ‹œμ μ€ 음수(minus) κ°’μ˜ 초 λ‹¨μœ„λ‘œ μ—­μ‹œ ν‘œκΈ°κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.

2.2 νƒ€μž„μŠ€νƒ¬ν”„ μ‚¬μš©

  • νŠΉμ • μ‹œμ  ν•˜λ‚˜λ₯Ό λ‚˜νƒ€λ‚Ό λ•Œ 보닀, νŠΉμ • μ‹œμ  μ—¬λŸ¬ 개λ₯Ό 비ꡐ할 λ•Œ 비ꡐ적 μœ μš©ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλŠ” 방식
    • IT μ‹œμŠ€ν…œμ—μ„œλŠ” 파일이 μƒμ„±λœ λ‚ μ§œμ™€ λ§ˆμ§€λ§‰μœΌλ‘œ μˆ˜μ •λœ λ‚ μ§œ, λ§ˆμ§€λ§‰μœΌλ‘œ μ‹€ν–‰λœ λ‚ μ§œ 등을 κΈ°λ‘ν•˜κ³  비ꡐ할 λ•Œ νƒ€μž„μŠ€νƒ¬ν”„κ°€ μ‚¬μš©λ˜λ©΄, μ„Έ 개의 μ‹œκ°„μ„ λΉ„κ΅ν•˜κΈ°κ°€ μˆ˜μ›”ν•˜κ² μ£ .
    • λ„€νŠΈμ›Œν¬ μ‹œμŠ€ν…œμ—μ„œλŠ” λ°μ΄ν„°λŠ” 보낸 μ‹œμ μ„ t1, 받은 μ‹œμ μ„ t2라고 ν–ˆμ„ λ•Œ, μ΄λ“€μ˜ μ‹œκ°„ 차이λ₯Ό 톡해 전달에 κ±Έλ¦° μ‹œκ°„μ„ 초 λ‹¨μœ„λ‘œ κ³„μ‚°ν•œλ‹€κ³  ν•˜λ©΄, νƒ€μž„μŠ€νƒ¬ν”„ 방식이 νŽΈλ¦¬ν•  κ²ƒμž…λ‹ˆλ‹€.

2.3 νƒ€μž„μŠ€νƒ¬ν”„ λ‹¨μœ„β€‹

νƒ€μž„μŠ€νƒ¬ν”„λŠ” μ²˜μŒμ—λŠ” 초(second) λ‹¨μœ„λ‘œ λ§Œλ“€μ–΄μ‘Œμ§€λ§Œ, λ¬Όλ¦¬ν•™μ΄λ‚˜ μ •λ°€ν•œ μˆ˜ν•™ 계산을 λ‹€λ£¨λŠ” μ‹œμŠ€ν…œμ—μ„œλŠ” μ•„μ£Ό μ •λ°€ν•œ μ‹œκ°„ 차이λ₯Ό λ‚˜νƒ€λ‚΄κΈ° μ–΄λ €μšΈ 수 있기 λ•Œλ¬Έμ— λŒ€λΆ€λΆ„μ˜ ν˜„λŒ€μ  ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œλŠ” 초λ₯Ό λ‹€μ‹œ 1000으둜 λ‚˜λˆˆ 밀리 μ„Έμ»¨λ“œ(millisecond) λ‹¨μœ„λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

Epochλ‘œλΆ€ν„° ν˜„μž¬κΉŒμ§€μ˜ 흐λ₯Έ μ‹œκ°„μ„ 양적인 초 λ‹¨μœ„λ‘œ ν‘œκΈ°ν•˜λ©΄ 10개의 λ‹¨μœ„κ°€ ν•„μš”ν•˜λ©°, μ‹œκ°„μ˜ λ‹¨μœ„λŠ” UTC둜 ν†΅μΌν•˜μ˜€κΈ° λ•Œλ¬Έμ— μ‹œμ°¨μ˜ 영ν–₯을 λ°›μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

3. νƒ€μž„μŠ€νƒ¬ν”„ ν‘œν˜„ (ISO 8601 & RFC 3339)

ISO 8601

ISO(International Organization for Standardization)은 μ΄λ¦„μ—μ„œ μ•Œ 수 μžˆλ“―μ΄ ꡭ제 ν‘œμ€€μ„ λ‹€λ£¨λŠ” κΈ°κ΄€μž…λ‹ˆλ‹€. 그리고 각 ν‘œμ€€μ€ "ISO λ„˜λ²„λ§" μœΌλ‘œ ν‘œκΈ°κ°€λ˜λŠ”λ°, ISO 8601은 λ‚ μ§œμ™€ μ‹œκ°„ 데이터 κ΅ν™˜μ„ λ‹€λ£¨λŠ” ꡭ제 ν‘œμ€€μ„ λœ»ν•©λ‹ˆλ‹€.

λ‚ μ§œ + μ‹œκ°„μ„ ν‘œν˜„ν•˜λŠ” 기본적인 ν˜•μ‹μ€ 'YYYY-MM-DDThh:mm:ss.sssZ' 을 μ‚¬μš©ν•©λ‹ˆλ‹€. μ—¬κΈ°μ„œ 문자 Tλ₯Ό κΈ°μ€€μœΌλ‘œ μ™ΌνŽΈμ—λŠ” λ‚ μ§œ, 였λ₯ΈνŽΈμ—λŠ” μ‹œκ°„μ„ ν‘œκΈ°ν•˜λ©°, ZλŠ” zone offset(UTC 의 μ‹œμ°¨)을 μ˜λ―Έν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, UTC+09:00(KST, ν•œκ΅­ ν‘œμ€€μ‹œ)λ₯Ό μ‚¬μš©ν•˜λŠ” μš°λ¦¬λ‚˜λΌλ₯Ό κΈ°μ€€μœΌλ‘œ ν‘œκΈ°ν•˜λ©΄ '2021-06-01T20:37:10+09:00' 이 λ©λ‹ˆλ‹€.

RFC 3339

RFC(Request For Comments)λŠ” 인터넷 ν‘œμ€€ 등이 μž‘μ„±λ˜μ–΄ μžˆλŠ” λ¬Έμ„œλ‘œ, ν•΄λ‹Ή λ¬Έμ„œλŠ” IETF(Internet Engineerging Task Force)μ—μ„œ κ΄€λ¦¬λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€. RFC 3339 μ—­μ‹œ, ISO 8601κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ λ‚ μ§œ, μ‹œκ°„μ˜ ν‘œμ€€μ— λŒ€ν•΄ 닀루고 μžˆμŠ΅λ‹ˆλ‹€.

RFC 3339의 λ‚΄μš© λŒ€λΆ€λΆ„μ€ ISO 8601을 λ”°λ₯΄κ³  μžˆμ§€λ§Œ, 차이점은 RFC 3339λŠ” 문자 T λŒ€μ‹  곡백으둜 λ‚ μ§œμ™€ μ‹œκ°„μ„ ꡬ뢄할 수 μžˆμ–΄ '2021-06-01 20:37:10+09:00'와 같이 ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ°Έκ³ 

λ°˜μ‘ν˜•