7

我已经搜索了 stackoverflow 的答案,但没有运气。我正在开发一个 Windows 应用程序,我有一些不同日期格式的字符串,例如。

dd/MM/yyyy
MM/dd/yyyy
MM-dd-yyyy
dd-MM-yyyy
dd/MM/yyyy hh:mm::ss
MM/dd/yyyy hh:mm::ss
etc...

但我需要转换为通用格式 - dd/MM/yyyy. 该应用程序可以在不同文化的任何 Windows 机器上运行。

正确的方法是什么?

编辑:还有一件事我可能不知道传入字符串的格式。

提前致谢。

4

4 回答 4

8

使用DateTime.ParseExact不同的模式作为格式。

如果在解析后您确实需要使用字符串表示,请使用您感兴趣的显式格式的ToString方法DateTime(以便它是文化不变的)。但是最好保留它,DateTime因为它与格式无关。

于 2012-07-10T07:18:48.997 回答
3

您可以区分使用不同分隔符的那些格式(即“/”与“-”)。但是您怎么知道诸如 2010 年 10 月 11 日这样的日期代表 11 月 10 日还是 10 月 11 日?如果一个数字不大于 12,则在不知道确切格式的情况下没有可靠的方法可以做到这一点。

正如其他人指出的那样,如果您确实知道确切的格式,那么您可以使用DateTime.ParseExact.

于 2012-07-10T07:20:52.377 回答
0

如果您正在处理一些包含大量日期的未知格式的导入文件您可以尝试不同的格式,并希望有一个不会出现格式错误。

或者换一种说法:将“日期”分成三个数字并检查每个数字的值范围。> 1900 的值将是年。如果您找到从 1 到 31 的值,则为天。从 1 到 12 的值可能是月,但也可能是天。尝试并识别每个部分。

最好的方法是向这些日期的供应商询问格式。

于 2012-07-10T07:32:36.137 回答
0

要在不同的文化上运行这个程序,我认为你应该创建一个函数来识别这种字符串格式的文化,然后使用 Datetime.Parse

于 2012-07-10T07:50:22.763 回答