TL;DR

  • Safari λΈŒλΌμš°μ €λŠ” YYYY.MM.DD νŒ¨ν„΄μ˜ λ¬Έμžμ—΄λ‘œ Date 객체λ₯Ό 생성할 수 μ—†λ‹€.
  • Chrome κ³Ό Safari λΈŒλΌμš°μ € λͺ¨λ‘ YYYY-MM-DD νŒ¨ν„΄μ˜ λ¬Έμžμ—΄λ‘œ Date 객체λ₯Ό 생성할 수 μžˆλ‹€.
  • Chrome κ³Ό Safari λΈŒλΌμš°μ € λͺ¨λ‘ YYYYMMDD νŒ¨ν„΄μ˜ λ¬Έμžμ—΄λ‘œ Date 객체λ₯Ό 생성할 수 μ—†λ‹€.

RangeError: Invalid Date

크둬 λΈŒλΌμš°μ €λ₯Ό μ‚¬μš©ν•˜λŠ” μ•ˆλ“œλ‘œμ΄λ“œμ—μ„œλŠ” μ •μƒμ μœΌλ‘œ λ™μž‘ν–ˆλ˜ μ½”λ“œκ°€ μ‚¬νŒŒλ¦¬ λΈŒλΌμš°μ €λ₯Ό μ‚¬μš©ν•˜λŠ” iOS μ—μ„œ RangeError κ°€ λ°œμƒν–ˆλ‹€. Invalid DateλŠ” Date 객체λ₯Ό μƒμ„±ν•˜λ €κ³  ν• λ•Œ μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ String 이 μ£Όμ–΄μ§„ 경우의 였λ₯˜λ₯Ό μ˜λ―Έν•œλ‹€. 졜근 μˆ˜μ •λœ μ½”λ“œλ₯Ό λ³΄λ‹ˆ YYYY.MM.DD νŒ¨ν„΄μ˜ λ¬Έμžμ—΄μ„ κ°€μ Έμ™€μ„œ μ½”λ“œ 둜직 상 Day.js λΌμ΄λΈŒλŸ¬λ¦¬μ— μ˜ν•΄ λ‚ μ§œ 객체λ₯Ό μƒμ„±ν•˜κ³  μžˆμŒμ„ 확인할 수 μžˆμ—ˆλ‹€. 그리고 dayjs()둜 객체λ₯Ό 생성할 λ•Œ λ‚΄λΆ€μ μœΌλ‘œ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ Date 객체λ₯Ό μƒμ„±ν•˜κΈ° λ•Œλ¬Έμ— 였λ₯˜κ°€ λ°œμƒν•œ κ²ƒμœΌλ‘œ 보인닀.

Safari Date RFC822

크둬 λΈŒλΌμš°μ €λ₯Ό μ‚¬μš©ν•˜λŠ” μ•ˆλ“œλ‘œμ΄λ“œμ—μ„œλŠ” μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜λŠ” μ½”λ“œμ΄κΈ° λ•Œλ¬Έμ— μ‚¬νŒŒλ¦¬ λΈŒλΌμš°μ €μ—μ„œ Invalid Date κ°€ ν‘œμ‹œλ˜λŠ” 것에 λŒ€ν•΄ κ²€μƒ‰ν•΄λ³΄λ‹ˆ μ „ν†΅μ μœΌλ‘œ YYYY-MM-DD νŒ¨ν„΄μ˜ λ¬Έμžμ—΄μΈ RFC822 λ₯Ό μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 글이 λŒ€λΆ€λΆ„μ„ μ°¨μ§€ν•˜κ³  μžˆλ‹€. μ΅œκ·Όμ— μˆ˜μ •λ˜μ—ˆλŠ”μ§€ μ•ŒκΈ° μ–΄λ €μš°λ‚˜ JavaScript μ½˜μ†”μ—μ„œ YYYY-MM-DD νŒ¨ν„΄μœΌλ‘œλ„ Date 객체λ₯Ό 생성할 수 μžˆμŒμ„ 확인할 수 μžˆμ—ˆλ‹€. κΈ°λ³Έμ μœΌλ‘œλŠ” YYYY-MM-DD 와 YYYY-MM-DD'T'HH:mm:ss 와 같은 νŒ¨ν„΄μ„ 주둜 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— μ‚¬νŒŒλ¦¬ λΈŒλΌμš°μ €μ—μ„œ Date 객체λ₯Ό μƒμ„±ν•˜λŠ”λ° λ¬Έμ œλŠ” μ—†μ—ˆλ˜ κ²ƒμœΌλ‘œ 보인닀.

YYYY.MM.DD β†’ YYYY-MM-DD

그러면, YYYY.MM.DD λŠ” μ™œ μ‚¬μš©ν•˜κ²Œ λ˜μ—ˆμ„κΉŒλ₯Ό μ‚΄νŽ΄λ³΄μžλ©΄ νŠΉμ • 이슈λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μˆ˜μ •λœ μ½”λ“œμ—μ„œλŠ” λ™μΌν•œ λ‚ μ§œλ₯Ό ν‘œμ‹œν•˜κΈ° μœ„ν•˜μ—¬ ν•΄λ‹Ή λ³€μˆ˜λ₯Ό κ°€μ Έμ™€μ„œ μ‚¬μš©ν–ˆκ³  ν•΄λ‹Ή λ³€μˆ˜μ˜ 값은 YYYY.MM.DD ν˜•νƒœλ‘œ κ΅¬μ„±λœ String κ°μ²΄μ˜€λ˜ 것이닀. 사싀은 κ·Έ λ³€μˆ˜ μžμ²΄μ μœΌλ‘œλŠ” YYYY.MM.DD ν˜•νƒœλ‘œ ν‘œμ‹œλ˜λŠ”κ²Œ λ§žμœΌλ―€λ‘œ μ˜¬λ°”λ₯΄κ²Œ λ˜μ–΄μžˆλ˜ λΆ€λΆ„μ΄μ§€λ§Œ, μ‚¬νŒŒλ¦¬ λΈŒλΌμš°μ €μ—μ„œ YYYY.MM.DD 처럼 콀마둜 ν‘œμ‹œλœ λ¬Έμžμ—΄λ‘œ λ‚ μ§œλ₯Ό 생성할 λ•Œμ—λŠ” λΆˆκ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— 콀마λ₯Ό λŒ€μ‹œλ‘œ μΉ˜ν™˜ν•΄μ„œ YYYY-MM-DD ν˜•νƒœλ‘œ μ‚¬μš©ν•΄μ•Όν•œλ‹€.

크둜슀 λΈŒλΌμš°μ§• 이슈

가끔씩 ν”„λ‘ νŠΈμ—”λ“œλ₯Ό μˆ˜μ •ν•˜λ‹€λ³΄λ©΄ 크둜슀 λΈŒλΌμš°μ§• λ¬Έμ œκ°€ 생각보닀 닀양함을 λŠλ‚€λ‹€. λΆ„λͺ…νžˆ ν‘œμ€€μœΌλ‘œ μ •μ˜λ˜μ–΄μžˆλŠ” 것 κ°™μ§€λ§Œ λΈŒλΌμš°μ €λ§ˆλ‹€ λ™μž‘μ΄ λ‹€λ₯΄λ‹€. ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžκ°€ μ•„λ‹ˆκΈ°λ„ ν•˜κ³  μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ Dateλ₯Ό 직접 닀루지 μ•Šκ³  Day.js와 같은 라이브러리λ₯Ό μ‚¬μš©ν–ˆκΈ°μ— μ΄λŸ¬ν•œ λ¬Έμ œκ°€ μžˆμ„λ¦¬λΌκ³ λŠ” μƒκ°ν•˜μ§€λ₯Ό λͺ»ν–ˆλ‹€. κ³Όκ±° ν”„λ‘œμ νŠΈμ—μ„œλŠ” Moment.jsλ₯Ό μ‚¬μš©ν–ˆλŠ”λ° λ™μΌν•œ 였λ₯˜λ₯Ό κ²½ν—˜ν•΄λ³Έ 적은 μ—†μ—ˆλ˜ 것 κ°™λ‹€. μ—¬λ‹΄μ΄μ§€λ§Œ, IT μ‹œμŠ€ν…œ κ°œλ°œμ—μ„œλŠ” λͺ¨λ“  것이 ν†΅μΌλœλ‹€λŠ” 것을 κ°€μ •ν•  순 μ—†λŠ”λ° μ‹œκ³„μ—΄ λ°μ΄ν„°λ² μ΄μŠ€ μ€‘μ—μ„œλŠ” 2025.08.21D00:00:00.000000 ν˜•νƒœλ‘œ λ‚ μ§œλ₯Ό ν‘œν˜„ν•˜λ©΄μ„œ ISO 8601 포맷을 μ§€μ›ν•˜μ§€ μ•ŠλŠ” 것도 μžˆλ‹€.