C#DateTime toString在Windows Server 2012和2016上的行为有所不同

时间:2018-12-17 12:04:01

标签: c# datetime iis webforms locale

我在Windows Server 2012和Windows Server 2016上具有相同的应用程序实例,但是在2012版本中,DateTime对象上的C#toString('yyMMddHHmmss')的行为与2016版本不同!

这是我在2012服务器中获得的toString的日志:

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的{​​{1}}的注册密钥被设置为HKEY_CURRENT_USER\Control Panel\International

编辑: 这是我使用en-US

的示例源代码
toString

1 个答案:

答案 0 :(得分:0)

尝试显式指定cultureinfo:

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

这将保证字符串格式的正确行为。