Fix Hebrew date parsing (#13929)
authorTarek Mahmoud Sayed <tarekms@microsoft.com>
Wed, 13 Sep 2017 15:20:46 +0000 (08:20 -0700)
committerGitHub <noreply@github.com>
Wed, 13 Sep 2017 15:20:46 +0000 (08:20 -0700)
This fix when parsing Hevrew dat e string formatted as dd/MM/yy. we didn't encounter the same on Windows before because default short date pattern on Windows is dd MMM yyyy which we can parse it successfully.

src/mscorlib/shared/System/Globalization/DateTimeParse.cs

index 415341a..f821a95 100644 (file)
@@ -2295,6 +2295,23 @@ new DS[] { DS.ERROR, DS.TX_NNN,  DS.TX_NNN,  DS.TX_NNN,  DS.ERROR,   DS.ERROR,
                         return false;
                     }
                     break;
+                case DS.DX_NNY:
+                    // When formatting, we only format up to the hundred digit of the Hebrew year, although Hebrew year is now over 5000.
+                    // E.g. if the year is 5763, we only format as 763. so we do the reverse when parsing.
+                    if (raw.year < 1000)
+                    {
+                        raw.year += 5000;
+                    }
+                    if (!GetDayOfNNY(ref result, ref raw, dtfi))
+                    {
+                        return false;
+                    }
+                    if (!dtfi.YearMonthAdjustment(ref result.Year, ref raw.month, true))
+                    {
+                        result.SetFailure(ParseFailureKind.FormatBadDateTimeCalendar, nameof(SR.Format_BadDateTimeCalendar), null);
+                        return false;
+                    }
+                    break;
                 case DS.DX_NM:
                 case DS.DX_MN:
                     // Deal with Month/Day pattern.