[트러블슈팅] IOS new Date 포맷 오류

ws·2024년 11월 26일

Coworkers

목록 보기
3/5

오류



  • IOS, 크롬에서 날짜 데이터가 Invalid Date 로 나오는 오류가 발생하는 것을 발견했습니다.
  • 갤럭시에서는 해당 오류가 발생하지 않았습니다.

원인

  • iOS에서는 new Date() 로 날짜를 생성할 때, 인자로 전달된 문자열이 특정 형식(예: YYYY-MM-DD 또는 YYYY/MM/DD)이 아니면 Invalid Date 오류가 발생할 수 있습니다.
  • selectedDate.toLocaleDateString('ko-KR') 는 2024. 11. 7과 같은 형식으로 반환되며, iOS의 new Date()에서 인식하지 못하는 형식입니다.

해결

 <DatePickerInput
	  label="시작 날짜 및 시간"
	  // 기존 selectedDate.toLocaleDateString('ko-KR') 에서 아래와 같이 수정
	  initialDate={new Date(selectedDate.getTime() + 9 * 60 * 60 * 1000)}
	  {...methods.register('startDate')}
	  errorMessage={methods.formState.errors.startDate?.message}
	/>
  • selectedDate.toLocaleDateString('ko-KR') 대신 selectedDate.getTime()을 사용하여 밀리초 단위의 시간 값을 얻고, 이를 통해 새로운 Date 객체를 생성합니다.
  • 이렇게 하면 iOS에서도 Invalid Date 오류 없이 날짜를 처리할 수 있습니다.
  • 이 방법은 ISO 8601의 하위 집합인 RFC 3339 형식과 호환됩니다.
  • getTime()을 사용하여 UTC 기준의 밀리초 값을 얻고, 이를 통해 새로운 Date 객체를 생성하면, 모든 플랫폼에서 일관된 날짜 처리가 가능합니다.

0개의 댓글