정말 간단한 일을하고 있습니다. 만료 날짜를 나타내는 문자열을 얻고 JavaScript를 사용하여 만료 날짜가지나 갔는지 여부를 확인하고 있습니다. 내 접근 방식은 다음과 같습니다.
var dateStringFromJson = "2015-09-11T11:21:48.113";
var expirationDate = new Date(Date.parse(dateStringFromJson));
if (expirationDate > new Date()) {
// Expiration not up
}
만료 전에이 함수를 실행하면 (예 : 오전 10시 50 분) 비교가 실패하고 함수는 만료 날짜가 만료 된 것처럼 작동합니다.
이 문제가 JavaScript의 시간대 변환과 관련이 있다고 확신합니다. 저는 UTC-7을 사용하고 있지만 고객은 미국 전역의 시간대에있을 수 있으므로 시간 대별 수정 사항이 여기서 작동하지 않습니다. 또한 절대적으로 필요한 경우가 아니면 moment.js와 같은 외부 라이브러리를 프로젝트에 추가하지 않는 것이 좋습니다.
함수를 사용하여 json 문자열을 지역화하십시오. 시간대없이 날짜 문자열을 구문 분석하면 UTC로 간주됩니다. 기능이 작동 하는 방식에 대한 설명은 비슷한 질문에 대한 내 대답 을 참조하십시오 localizeDateStr()
.
function localizeDateStr(date_to_convert_str) {
var date_to_convert = new Date(date_to_convert_str);
var local_date = new Date();
date_to_convert.setHours(date_to_convert.getHours() + (local_date.getTimezoneOffset() / 60));
return date_to_convert;
}
function checkExpired() {
var dateString = document.getElementById('date').value;
var expirationDate = localizeDateStr(dateString);
if (expirationDate > new Date()) {
alert("Expiration not up.");
} else {
alert("Expired!");
}
}
Expiration Datetime:
<input id="date" type="text" value="2015-09-11T11:21:48.113" />
<button id="btn" onclick="checkExpired()">Is expired?</button>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다