2014-11-20 4 views
1

두 날짜 사이의 월간 날짜 차이에 대한 문제가 있습니다. 다음은 샘플입니다VBScript DateDiff 월

DateDiff("m","2014-10-17","2014-10-30") 

한 달 미만이기 때문에 위의 코드는 0개월을 반환합니다. 하지만,

DateDiff("m","2014-10-17","2014-11-01") 

은 15 일로 표시되지 않으므로 1을 반환합니다.

내 문제는이 두 날짜가 이미 한 달을 초과하는지보고 싶지만 날짜의 한 달 부분이 변경된 경우에만 1 개월을 계산하는 것으로 보입니다.

답변

2

DateDiff은 첫 번째 매개 변수에 정의 된 정밀도로 두 개의 시간 소인 사이의 기간을 계산합니다. 귀하의 질문에 설명하신 내용과 의견은 오히려 다음과 같은 것을 찾고있는 것 같습니다.

ds1 = "2014-10-17" 
ds2 = "2014-10-30" 

d1 = CDate(ds1) 
d2 = CDate(ds2) 

diff = DateDiff("m", d1, d2) 
If diff > 0 And Day(d2) < Day(d1) Then diff = diff - 1 

WScript.Echo diff & " full months have passed between " & ds1 & " and " & ds2 & "." 
0

'DateDiff ("d", date1, date2)'를 사용하여 두 날짜 간의 일일 차이를 계산할 수 있습니다. 그런 다음 30 일을 나누어 전체 월수를 계산하십시오.

다음은 예입니다.

monthDiff = int(DateDiff("d","2014-10-17","2014-11-01")/30) 

알다시피, 달의 날짜는 월별로 다릅니다. 예를 들어, 11 월은 30 일이고 12 월은 31 일입니다.

첫 번째 날이 11 월이고 월 31 일을 사용하려면 월 30 일을 사용하고 첫날 12 월을 사용하려면 코드에 달 정보를 처리하는 데 필요한 일 수와 일상적인 테이블이 필요합니다.

+0

그게 바로 제가 피하고 싶었던 것입니다. 내장 된 함수는 쉽게 만들 수 있지만 이상적이지 않은 것처럼 보입니다. 그리고 윤년에도 문제가 있습니다. 누군가가 이것을 할 수있는 소스 코드를 줄 수 있기를 바랍니다. – kenjohnny09

+0

'DateDiff'에 이상적인 기능이 없습니다. 문제를 해결할 수있는 방법은 두 가지가 있습니다. 1) VBScript를 개발하여 개발자가 원하는대로 'DataDiff'를 개선 할 수 있는지 물어보십시오. 2) 'DataDiff'기능이 불충분 한 방법을 찾으십시오. StackOverflow는 VBScript의 개발자가 아니므로 1) 방법의 해결책을 요구해서는 안됩니다. 행운을 빕니다! –

+0

@ kenjohnny09 만약 당신이 대답을 원한다면 그것을 언급하는 것이 좋을 것입니다. 둘을 결합해야합니다. 월간 차이가 1 일 경우 확실한 요일을 확인하십시오. 귀하의 예에서 11-10은 가장 핵심적인 대답과 같습니다. 여분의 수표로 당신의 달을 비교하여 정확한 수학을 얻을 수 있습니다. – Matt