JavaScript 또는 Java를 사용하여 ISO-8601 기간을 날짜로 변환해야합니다. 예를 들어 ISO-8601과 같은 P0000-00-60T00:00:00
현재 날짜와 같은 2014-11-30
의미, 나는 다음과 같은 출력을 얻고 싶습니다.2015-01-29
ECMAScript에서 "2014-11-30"과 같은 ISO 8601 날짜를 파싱하는 것은 간단합니다. 이를 수행하는 함수는 날짜의 유효성을 검사하고 유효하지 않은 경우 NaN을 반환해야합니다.
function parseYMD(s) {
var b = s.split(/\D/);
var d = new Date(b[0], --b[1], b[2]);
return d && d.getFullYear() == b[0] && d.getDate() == b[2]? d : NaN;
}
비슷한 논리를 적용하여 기간을 구문 분석하고 날짜에 추가 할 수 있습니다.
// Period in extended format: Py-m-dTh:m:s
// Modifies the date passed in and returns it
function addPeriod(p, d) {
d = d || new Date();
var b = p.match(/\d+/g);
d.setFullYear(d.getFullYear() + +(b[0]), d.getMonth() + +(b[1]), d.getDate() + +(b[2]));
d.setHours(d.getHours() + +(b[3]), d.getMinutes() + +(b[4]), d.getMinutes() + +(b[5]))
return d;
}
위의 내용은 또한 해당 기간의 일부가 모듈을 초과하지 않는지 확인해야합니다. 예를 들어 월은 12 시간을 초과 할 수없고 시간은 24 시간을 초과 할 수 없으며 분은 59를 초과 할 수 없습니다.
// Parse string to date
var date = parseYMD('2014-11-21');
console.log(date);
// Add a period to a date
addPeriod('P1-0-0T10:10:10', date);
console.log(date);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다