При попытке разобрать дату с культурой es-ES
Локальное поведение у меня отличается, чем при запуске одного и того же кода на сервере сборки и при использовании dotnetfiddle.
Моя тестовая программа, которая выдвигает на первый план эту проблему, выглядит следующим образом:
public static void Main(string[] args)
{
var when = new DateTime(2018, 01, 19);
CultureInfo dateCulture = new CultureInfo("es-ES");
var headerDate = "19-ene-2018";
bool success;
DateTime result;
Console.WriteLine(when.ToString("dd-MMM-yyyy", dateCulture));
success = DateTime.TryParseExact(
headerDate,
"dd-MMM-yyyy",
dateCulture,
DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal,
out result);
Console.WriteLine(success);
Console.WriteLine(result);
}
В местном масштабе это производит:
19-ene-2018
True
1/19/2018 12:00:00 AM
В то время как на dotnetfiddle выдает:
19-ene.-2018
False
1/1/0001 12:00:00 AM
Первое удивительное, что при использовании точно такого же формата даты сервер форматирует месяц как ene.
, где локально это ene
(обратите внимание на дополнительный период). Это то, что я считаю причиной фактической даты, чтобы не анализировать.
Прежде чем сдаться и использовать регулярное выражение или какое-либо другое столь же ужасное решение, есть ли у кого-нибудь идеи относительно того, почему это может происходить? Является ли это различием между установкой сервера и платформы рабочего стола?