>  기사  >  데이터 베이스  >  SimpleDateFormat.parse가 예기치 않은 출력 형식을 생성하는 이유는 무엇입니까?

SimpleDateFormat.parse가 예기치 않은 출력 형식을 생성하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-01 03:12:02235검색

Why Does SimpleDateFormat.parse Yield an Unexpected Output Format?

SimpleDateFormatter.parse가 예기치 않은 출력 형식을 제공

코드에서 SimpleDateFormatter.format과 SimpleDateFormatter.parse가 생성하는 불일치가 발생했습니다. 다양한 출력 형식. 이 동작의 원인을 자세히 살펴보겠습니다.

SimpleDateFormatter 클래스에는 날짜를 올바르게 조작하기 위해 날짜 형식과 시간대 정보가 모두 필요합니다. 귀하의 경우 지정한 형식은 "dd/MM/yyyy hh:mm:ss a"(예: 23/05/2018 03:30:00 PM)입니다. 그러나 포맷된 날짜를 동일한 포맷으로 다시 분석하면 AM/PM 지정을 나타내는 포맷의 "a"로 인해 IST(Indian Standard Time) 시간대를 인식하게 됩니다.

이것은 SimpleDateFormatter.parse가 IST 시간대를 사용하여 날짜를 해석하여 "5월 23일 수요일 15:30:00 IST 2018"이라는 타임스탬프가 생성됨을 의미합니다. 이 형식은 시간대 정보가 포함되어 있기 때문에 원래 지정한 형식과 다릅니다.

이 문제를 해결하려면 다음 해결 방법을 고려하십시오.

  • java.time의 LocalDateTime: 허용된 답변에서 제안한 대로 java.time API의 LocalDateTime을 활용하면 더 깔끔하고 현대적인 접근 방식을 제공합니다. 이 객체는 시간대 편향 없이 날짜 및 시간 정보를 캡슐화합니다. epoch 타임스탬프를 LocalDateTime으로 변환하고 구문 분석 문제 없이 MySQL 데이터베이스에 직접 삽입할 수 있습니다.
  • 시간대를 명시적으로 설정하세요. 또는 SimpleDateFormatter를 사용하려면 다음을 확인하세요. 구문 분석을 적용하기 전에 시간대를 명시적으로 설정해야 합니다. 시간대를 미리 지정하면 날짜 및 시간 값의 해석을 제어할 수 있습니다.

요약하면 SimpleDateFormatter.format과 SimpleDateFormatter.parse 간의 불일치는 시간대 고려 사항으로 인해 발생합니다. java.time API를 활용하거나 SimpleDateFormatter에서 시간대를 명시적으로 관리하면 이러한 형식 불일치를 방지하고 일관된 날짜 처리를 보장할 수 있습니다.

위 내용은 SimpleDateFormat.parse가 예기치 않은 출력 형식을 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.