Tag: regional settings

服务器在区域设置中设置为en-GB,但DateTime解析为en-US

我通过将每个记录推送到validation阶段然后进入数据库来处理记录。 其中一个validation步骤需要检查某些列是否为日期。 我使用DateTime.TryParse(s,out DateTime)这样做,假设这将使用运行该进程的机器上配置的区域设置。 在我的本地计算机上,这是一个在Visual Studio的命令行工具中运行的包装类(为了便于调试)。 因此,根据我的Windows 7开发计算机上的en-GB设置,13/01/2010格式化为2010年1月13日。 在将其推送到我们的测试服务器(Windows Server 2008 R2)上时,此包装类在Window Service(在LocalSystem帐户下)中运行。 完全相同的代码,我设计它使服务只是一个薄的包装。 但是,经过多次调试后,服务器似乎正在解析13/01/2010为en-US,因此失败了。 尽管区域设置设置为en-GB。 (见截图) 请注意,这是在它到达SQL Server之前的方式,因此这不是此问题的一部分。 在与此斗争之后,我通过使用下面的代码并将所需格式设置为en-GB来强迫这种情况。 Culture = CultureInfo.CreateSpecificCulture(“en-GB”); DateTimeStyles dateTimeStyles = DateTimeStyles.None; DateTime dt; bool pass = DateTime.TryParse(s,Culture,dateTimeStyles, out dt); 这现在有效。 我的问题是,为什么在本地系统下运行的Windows服务假设是en-US而不是en-GB?