oleaut32: Treat years 0 to 29 as 2000 to 2029 in VARIANT_RollUdate.
This commit is contained in:
parent
5afde5f378
commit
cc37abb658
|
@ -1742,7 +1742,10 @@ static void test_SystemTimeToVariantTime(void)
|
|||
ST2DT(2,1,1980,0,0,0,0,TRUE,29222.0);
|
||||
ST2DT(0,1,1980,0,0,0,0,TRUE,29220.0); /* Rolls back to 31 Dec 1899 */
|
||||
ST2DT(1,13,1980,0,0,0,0,FALSE,29587.0); /* Fails on invalid month */
|
||||
ST2DT(31,12,90,0,0,0,0,TRUE,33238.0); /* year < 100 is 1900+year! */
|
||||
ST2DT(31,12,90,0,0,0,0,TRUE,33238.0); /* 30 <= year < 100 is 1900+year */
|
||||
ST2DT(1,1,30,0,0,0,0,TRUE,10959.0); /* 30 <= year < 100 is 1900+year */
|
||||
ST2DT(1,1,29,0,0,0,0,TRUE,47119.0); /* 0 <= year < 30 is 2000+year */
|
||||
ST2DT(1,1,0,0,0,0,0,TRUE,36526.0); /* 0 <= year < 30 is 2000+year */
|
||||
}
|
||||
|
||||
static void test_dt2st(int line, double dt, INT r, WORD d, WORD m, WORD y,
|
||||
|
|
|
@ -1143,8 +1143,11 @@ static HRESULT VARIANT_RollUdate(UDATE *lpUd)
|
|||
|
||||
if (iYear > 9999 || iYear < -9999)
|
||||
return E_INVALIDARG; /* Invalid value */
|
||||
/* Years < 100 are treated as 1900 + year */
|
||||
if (iYear > 0 && iYear < 100)
|
||||
/* Year 0 to 29 are treated as 2000 + year */
|
||||
if (iYear >= 0 && iYear < 30)
|
||||
iYear += 2000;
|
||||
/* Remaining years < 100 are treated as 1900 + year */
|
||||
else if (iYear >= 30 && iYear < 100)
|
||||
iYear += 1900;
|
||||
|
||||
iMinute += iSecond / 60;
|
||||
|
|
Loading…
Reference in New Issue