diff --git a/src/NzbDrone.Core.Test/ParserTests/DateUtilFixture.cs b/src/NzbDrone.Core.Test/ParserTests/DateUtilFixture.cs new file mode 100644 index 000000000..df2d4350c --- /dev/null +++ b/src/NzbDrone.Core.Test/ParserTests/DateUtilFixture.cs @@ -0,0 +1,27 @@ +using System; +using System.Globalization; +using System.Threading; +using FluentAssertions; +using NUnit.Framework; +using NzbDrone.Core.Parser; +using NzbDrone.Core.Test.Framework; + +namespace NzbDrone.Core.Test.ParserTests +{ + [TestFixture] + public class DateUtilFixture : CoreTest + { + [TestCase("pt-BR")] + [TestCase("en-US")] + public void should_format_date_invariant(string culture) + { + Thread.CurrentThread.CurrentCulture = new CultureInfo(culture); + + var dateNow = DateTime.Now; + + DateTimeUtil.FromUnknown(dateNow.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture)) + .ToString(DateTimeUtil.Rfc1123ZPattern, CultureInfo.InvariantCulture) + .Should().Be(dateNow.ToString("ddd, dd MMM yyyy HH':'mm':'ss z", CultureInfo.InvariantCulture)); + } + } +} diff --git a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannBase.cs b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannBase.cs index b8ed63a1b..8c940bc2d 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannBase.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannBase.cs @@ -617,14 +617,14 @@ namespace NzbDrone.Core.Indexers.Cardigann if (layout.Contains("yy") && DateTime.TryParseExact(data, layout, CultureInfo.InvariantCulture, DateTimeStyles.None, out var parsedDate)) { - data = parsedDate.ToString(DateTimeUtil.Rfc1123ZPattern); + data = parsedDate.ToString(DateTimeUtil.Rfc1123ZPattern, CultureInfo.InvariantCulture); } else { try { var date = DateTimeUtil.ParseDateTimeGoLang(data, layout); - data = date.ToString(DateTimeUtil.Rfc1123ZPattern); + data = date.ToString(DateTimeUtil.Rfc1123ZPattern, CultureInfo.InvariantCulture); } catch (InvalidDateException ex) { @@ -696,10 +696,10 @@ namespace NzbDrone.Core.Indexers.Cardigann break; case "timeago": case "reltime": - data = DateTimeUtil.FromTimeAgo(data).ToString(DateTimeUtil.Rfc1123ZPattern); + data = DateTimeUtil.FromTimeAgo(data).ToString(DateTimeUtil.Rfc1123ZPattern, CultureInfo.InvariantCulture); break; case "fuzzytime": - data = DateTimeUtil.FromUnknown(data).ToString(DateTimeUtil.Rfc1123ZPattern); + data = DateTimeUtil.FromUnknown(data).ToString(DateTimeUtil.Rfc1123ZPattern, CultureInfo.InvariantCulture); break; case "validfilename": data = StringUtil.MakeValidFileName(data, '_', false); diff --git a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs index 244b221df..91374487f 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Net; using System.Text.RegularExpressions; @@ -509,7 +510,7 @@ namespace NzbDrone.Core.Indexers.Cardigann break; case "date": release.PublishDate = DateTimeUtil.FromUnknown(value); - value = release.PublishDate.ToString(DateTimeUtil.Rfc1123ZPattern); + value = release.PublishDate.ToString(DateTimeUtil.Rfc1123ZPattern, CultureInfo.InvariantCulture); break; case "files": release.Files = ParseUtil.CoerceInt(value);