繁体   English   中英

将未知格式的字符串转换为c#中的日期

[英]convert string in unknown format to date in c#

我搜索了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机器上运行。

这样做的正确方法是什么?

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

提前致谢。

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

如果解析后你真的需要使用字符串表示,请使用DateTimeToString方法,使用您感兴趣的显式格式(这样它就是文化不变的)。 但是保留DateTime更好,因为这与格式无关。

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

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

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

或者换句话说:将“日期”分成三个数字,并检查每个数字的值范围。 值> 1900将是年。 如果您发现1到31之间的值,那么这些将是几天。 从1到12的值可能是几个月,但也可能是几天。 尝试并识别每个部分。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM