Index: src/of_strptime.m ================================================================== --- src/of_strptime.m +++ src/of_strptime.m @@ -112,33 +112,33 @@ case 'b': if (bufferLen < j + 3) return NULL; if (memcmp(buffer + j, "Jan", 3) == 0) - tm->tm_mon = 1; + tm->tm_mon = 0; else if (memcmp(buffer + j, "Feb", 3) == 0) - tm->tm_mon = 2; + tm->tm_mon = 1; else if (memcmp(buffer + j, "Mar", 3) == 0) - tm->tm_mon = 3; + tm->tm_mon = 2; else if (memcmp(buffer + j, "Apr", 3) == 0) - tm->tm_mon = 4; + tm->tm_mon = 3; else if (memcmp(buffer + j, "May", 3) == 0) - tm->tm_mon = 5; + tm->tm_mon = 4; else if (memcmp(buffer + j, "Jun", 3) == 0) - tm->tm_mon = 6; + tm->tm_mon = 5; else if (memcmp(buffer + j, "Jul", 3) == 0) - tm->tm_mon = 7; + tm->tm_mon = 6; else if (memcmp(buffer + j, "Aug", 3) == 0) - tm->tm_mon = 8; + tm->tm_mon = 7; else if (memcmp(buffer + j, "Sep", 3) == 0) - tm->tm_mon = 9; + tm->tm_mon = 8; else if (memcmp(buffer + j, "Oct", 3) == 0) - tm->tm_mon = 10; + tm->tm_mon = 9; else if (memcmp(buffer + j, "Nov", 3) == 0) - tm->tm_mon = 11; + tm->tm_mon = 10; else if (memcmp(buffer + j, "Dec", 3) == 0) - tm->tm_mon = 12; + tm->tm_mon = 11; else return NULL; j += 3; break; Index: tests/OFDateTests.m ================================================================== --- tests/OFDateTests.m +++ tests/OFDateTests.m @@ -39,11 +39,11 @@ struct tm tm; int16_t tz; const char *dstr = "Wed, 09 Jun 2021 +0200x"; TEST(@"of_strptime()", of_strptime(dstr, "%a, %d %b %Y %z", &tm, &tz) == dstr + 22 && - tm.tm_wday == 3 && tm.tm_mday == 9 && tm.tm_mon == 6 && + tm.tm_wday == 3 && tm.tm_mday == 9 && tm.tm_mon == 5 && tm.tm_year == 2021 - 1900 && tz == 2 * 60) TEST(@"+[dateWithTimeIntervalSince1970:]", (d1 = [OFDate dateWithTimeIntervalSince1970: 0]))