P粉9680081752023-08-24 14:38:40
이 글을 쓰는 시점에서 다른 답변 중 하나만 DST(일광 절약 시간) 변환을 올바르게 처리합니다. 캘리포니아에 위치한 시스템의 결과는 다음과 같습니다.
으아아아 Math.round
는 올바른 결과를 반환하지만 조금 투박한 것 같습니다. 대신 DST가 시작되거나 끝날 때 UTC 오프셋의 변경 사항을 명시적으로 설명함으로써 정확한 산술을 사용할 수 있습니다.
JavaScript 날짜 계산은 Date
객체가 현지 시간이 아닌 UTC 시간을 내부적으로 저장하기 때문에 까다롭습니다. 예를 들어, 2013년 3월 10일 오전 12시 태평양 표준시(UTC-08:00)는 2013년 3월 10일 오전 8시 UTC로 저장되고 2013년 3월 11일 오전 12시 태평양 일광 절약 시간제( UTC-07:00)은 2013년 3월 11일 오전 7시 UTC로 저장됩니다. 이날 자정부터 자정까지 현지 시간은 UTC보다 고작 23시간 빠릅니다!
현지 시간의 하루는 24시간보다 길거나 짧을 수 있지만 UTC의 하루는 항상 정확히 24시간입니다. 1 위에 표시된 daysBetween
方法利用了这一点通过首先调用 treatAsUTC
은 두 현지 시간을 UTC 자정으로 조정한 다음 이 사실을 이해하기 위해 빼고 나눕니다.
1. JavaScript는 윤초를 무시합니다.
P粉1868974652023-08-24 12:44:32
여기에 질문에 제기된 문제를 해결하기 위한 개념 증명으로 datediff
빠르고 더러운구현이 있습니다. 두 날짜 사이에 경과된 밀리초 수를 빼면 이를 원래 숫자 값(1970년 초 이후의 밀리초 수)으로 강제 변환할 수 있다는 사실에 의존합니다.