diff --git a/src/MessageHelper.cs b/src/MessageHelper.cs index 83ed95f..9682a17 100644 --- a/src/MessageHelper.cs +++ b/src/MessageHelper.cs @@ -57,7 +57,7 @@ public static string[] ExtractMessages(string messages) public static DateTime? ParseDateTime(string dateTimeString, out TimeSpan offset, bool throwExeption = false) { - var expr = @"^\s*((?:19|20)[0-9]{2})(?:(1[0-2]|0[1-9])(?:(3[0-1]|[1-2][0-9]|0[1-9])(?:([0-1][0-9]|2[0-3])(?:([0-5][0-9])(?:([0-5][0-9](?:\.[0-9]{1,4})?)?)?)?)?)?)?(?:([+-][0-1][0-9]|[+-]2[0-3])([0-5][0-9]))?\s*$"; + var expr = @"^\s*((?:18|19|20)[0-9]{2})(?:(1[0-2]|0[1-9])(?:(3[0-1]|[1-2][0-9]|0[1-9])(?:([0-1][0-9]|2[0-3])(?:([0-5][0-9])(?:([0-5][0-9](?:\.[0-9]{1,4})?)?)?)?)?)?)?(?:([+-][0-1][0-9]|[+-]2[0-3])([0-5][0-9]))?\s*$"; var matches = Regex.Matches(dateTimeString, expr, RegexOptions.Singleline); offset = new TimeSpan(); diff --git a/test/Program.cs b/test/Program.cs index f0474db..c101e54 100644 --- a/test/Program.cs +++ b/test/Program.cs @@ -460,7 +460,27 @@ public void ParseDateTimeOffset_WithException() { } } + + [DataTestMethod] + [DataRow("18151231")] + [DataRow("19151231")] + [DataRow("20151231")] + public void ParseDateTime_Year(string dateTimeString) + { + var date = MessageHelper.ParseDateTime(dateTimeString); + Assert.IsNotNull(date); + } + [DataTestMethod] + [DataRow("1701231")] + [DataRow("16151231")] + [DataRow("00001231")] + public void ParseDateTime_Year_Negative(string dateTimeString) + { + var date = MessageHelper.ParseDateTime(dateTimeString); + Assert.IsNull(date); + } + [TestMethod] public void GetValueTest() {