JS DateTime is so, so cursed
- JavaScript의 DateTime은 매우 저주받은 존재이며, JavaScript 자체만큼이나 끔찍함. 😈
- JavaScript는 강력하지만 일주일 만에 설계되었고, 많은 이상한 동작들이 존재함. 🤪
- 특히 JavaScript의 Date 클래스는 시간대와 관련된 더욱 이상한 동작들을 포함하고 있음. 🤯
- Savala는 다양한 클라우드 서비스를 통합하여 앱 배포를 간편하게 해주는 플랫폼임. 🚀
- Savala를 통해 데이터베이스, CDN, 방화벽 등을 쉽게 관리하고, 다양한 프레임워크를 지원함. 🛠️
- JavaScript Date 클래스의 특이한 동작들을 파악하기 위한 퀴즈를 진행하며 혼란스러워함. ❓
- 0을 넣으면 2000년으로 해석되고, 1은 2001년으로 해석되는 등 예측 불가능한 동작을 보임. 😵
- Date.parse는 문자열에만 작동하며, 숫자를 넣으면 문자열로 변환하여 처리함. ✍️
- 유효하지 않은 날짜도 Date 객체로 반환되며, getTime()을 호출하면 NaN을 반환함. 👻
- toTimeString()은 "Invalid Date" 문자열을 반환하지만, toISOString()은 에러를 발생시킴. 💢
- 숫자를 입력할 때 13부터 31까지는 파싱되지 않지만, 32부터는 다시 작동하는 기이한 현상이 발생함. 😵💫
- 49는 2049년으로, 50은 1950년으로 해석되는 등 일관성 없는 동작을 보임. 🪦
- 문자열 파싱 시 대시(-)를 특정 형식으로 인식하여 예상치 못한 결과를 초래함. 🕳️
- 빈 문자열은 epoch time(1970년 1월 1일)으로 처리되지만, 유효하지 않은 날짜로 간주될 수도 있음. 🤷
- "May"와 같은 문자열을 포함하면 BST 시간대로 인식하는 등 시간대 관련 문제도 발생함. 🧭
- 괄호 안의 텍스트는 무시되는 등 문자열 파싱 규칙이 일관되지 않음. 🙊
- 음수 빈 배열은 -0으로 취급되어 1970년으로 해석됨. 🕳️
- Temporal API는 더 나은 날짜/시간 처리를 위한 대안으로 제시됨. ✨
- Firefox는 Chrome과 Node.js와 다른 방식으로 Date 객체를 처리함. 🦊
- V8 엔진이 Date를 구현하는 것이 아니라 런타임 환경에서 제공한다는 사실이 밝혀짐. 🤯
- JavaScript의 Date 관련 동작은 매우 복잡하고 예측하기 어려우며, 개선이 필요함. 😥
- 브라우저의 호환성 문제로 인해 기존의 이상한 동작을 수정하기 어렵다는 점을 강조함. 🚧
- 그럼에도 불구하고 개발자들은 이러한 문제점을 인지하고 해결하기 위해 노력해야 함. 💪