Don't correct DST when parsing dates

If the tm_isdst field doesn't correspond to the date fields, mktime()
tries to correct that by adding one hour to the time and changing the
tm_isdst field. Because the user's local time is being, the DST might
differ from what is being parsed and this type of correction can happen.
If the user's localtime is between 23:00 and 23:59, that means that the
day is also going to change and that breaks the algorithm, because it
depends on the day being the same after normalization.

-1 in tm_isdst means that mktime shouldn't correct the time and just
fill in tm_isdst based on what date says.
diff --git a/src/parser.c b/src/parser.c
index 3b04861..d66219f 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -2523,6 +2523,7 @@
     }
 
     memcpy(&tm_, &tm, sizeof tm);
+    tm_.tm_isdst = -1; /* mktime corrects DST mismatches, this stops it from doing that */
     mktime(&tm_); /* mktime modifies tm_ if it refers invalid date */
     if (tm.tm_mday != tm_.tm_mday) { /* e.g 2018-02-29 -> 2018-03-01 */
         /* checking days is enough, since other errors