C # DateTime toString ведет себя по-разному на Windows Server 2012 и 2016 - PullRequest
0 голосов
/ 17 декабря 2018

У меня один и тот же экземпляр приложения на Windows Server 2012 и другое на Windows Server 2016, но в версии 2012 C # toString('yyMMddHHmmss') на объекте DateTime ведет себя иначе, чем в версии 2016!

Вотжурнал toString я получаю в 2012 году сервер:

Info Culture is: fa-IR 
Info UiCulture is: fa-IR 
Info transactionTime: 181217145529 

и вот вывод версии 2016:

Info Culture is: fa-IR 
Info UiCulture is: fa-IR 
Info transactionTime: 970926140801 

Следует отметить, что настройка панели управления в разделе регионаобе системы идентичны, я понятия не имею, что происходит с версией 2012 года!Буду признателен за любую оказанную помощь.Идентичность пула приложений обоих серверов установлена ​​на ApplicationPoolIdentity, а ключ регистрации International, расположенный здесь HKEY_CURRENT_USER\Control Panel\International, установлен на en-US для обоих серверов.

Редактировать: Вот пример источникакод моего использования toString

var date = transactionTime.ToString("yyMMddHHmmss")

1 Ответ

0 голосов
/ 17 декабря 2018

Попробуйте явно указать cultureinfo:

DateTime transactionTime = DateTime.UtcNow;
Console.WriteLine(transactionTime.ToString("yyMMddHHmmss", new CultureInfo("fa-IR")));
Console.WriteLine(transactionTime.ToString("yyMMddHHmmss", new CultureInfo("en-GB")));

Это гарантирует правильное поведение формата строки.

...