将来自不同文化的DateTime字符串传递给服务

时间:2017-09-26 15:39:18

标签: c# datetime service datetime-format culture

我有一个Windows 10桌面应用程序项目和服务项目的解决方案。 Desktop Application启动服务并传递一个DateTime转换为String的参数。在服务中,字符串被传递给DateTime.TryParse(string, out DateTime),但这一直都失败了。我的测试系统的文化是德语,但我意识到在服务中,文化总是似乎是en-US(我认为因为它在SYSTEM上下文中运行)。我知道我的应用程序将在全球16个不同的国家/地区运行。我在想是否能以某种方式获得用户文化并在我的服务中使用此信息来使用DateTime.TryParse的第二个重载,我可以在其中指定IFormatProvider,但这是最佳解决方案吗?我基本上需要一个强大的解决方案来将来自不同文化的DateTime字符串传递给我的服务,以便我可以进一步使用它。在将DateTime字符串传递给服务之前根据服务文化格式化它是否可以接受?

1 个答案:

答案 0 :(得分:2)

  

Desktop Application启动服务并传递一个参数,该参数是转换为String的DateTime。

您可以使用InvariantCulture在应用程序和服务之间进行通信:

  

InvariantCulture可用于存储不会直接显示给最终用户的数据。以与文化无关的格式存储数据可确保不会发生变化的已知格式。当来自不同文化的用户访问数据时,可以根据用户对其进行适当格式化。例如,如果将DateTime类型存储在为InvariantCulture格式化的文本文件中,则在调用DateTime.ToString方法存储字符串时使用InvariantCulture属性,使用Date.Parse方法检索字符串。这将确保在不同文化的用户读取或写入数据时,DateTime类型的基础值不会发生变化。