2012-01-19 7 views
1

Excel에서 일치하는 날짜 계산을 자바 스크립트에서 수행하려고합니다. 이것은 -2424Excel과 javascript 날짜 계산이 다릅니다

의 결과를 제공

//Excel 
=(EDATE(DATE(2000,6,1),60)-DATE(2012,1,20)) 

그래서와 자바 스크립트 같은 계산을 수행하려고이 -2423

I의 결과를 제공

//Javascript - using datejs library 
a = Date.parse('2000/06/01').addMonths(60); 
b = Date.parse('2012/01/20'); 
a.setHours(12,0,0); 
b.setHours(12,0,0); 
span = new TimeSpan(a - b); 
console.log(span.getDays()); 

다음 왜 내가 하루를 잃어 버리는 지 알 수 없습니다. 누구나 이런 일이 일어날 수있는 방법을 밝힐 수 있습니까?

사전에 도움을 청합니다. :)

+1

'EDATE()'와 (과)'addMonths()'에 의해 계산 된 결과가 같은 날을 참조하는지 확인할 수 있습니까? –

+0

엑셀 결과가 올바른 것입니다 : 2005-06-01부터 2006-01-01에 도달하려면 30 + 31 + 31 + 30 + 31 + 30 + 31이 필요하고 365 * 6 + 1 (2008 윤년) 2012-01-01에 도달하면 19 일 후 2012-01-20로 이동합니다. –

답변

1

아무 것도 없으면 두 앱이 고려할 수있는 2005 년과 2008 년 (둘 다 12 월 31 일 모두)에 두 번의 도약이 발생했습니다. 명시 적으로 JS 날짜를 "정오"로 설정했지만 엑셀에 대한 시간을 지정하지 않았으므로 자정이 기본값이됩니다. 자정은 초 단위가 발생할 때입니다. 엑셀 날짜/시간이 JS 계산서에서 2 초가되고 자정 경계를 넘을 수있어 실종 된 날을 계산할 수 있습니다.

+0

원래 정오 설정이 없었지만 같은 결과가 나왔습니다. 따라서 여기에있는 게시물을 읽은 후에 도움이되는지 알기 위해 추가했습니다. 아쉽게도하지 않았습니다. – dibs

+0

javascript에서 자정까지 두 날짜의 시간을 설정했는데 문제가 해결 된 것으로 보입니다. 당신의 도움을 주셔서 감사합니다. – dibs