C# 如何获取已解析字符串的格式

C# 如何获取已解析字符串的格式,c#,.net,parsing,format,C#,.net,Parsing,Format,Parse接受一个字符串并返回等效的DateTime 有没有办法获取解析器正在使用的格式 例如,2011年7月19日将返回M/dd/yyyy,而2011年7月19日将返回dd-M-yyyy DateTime.TryParseExact如果还返回正在使用的格式,则对我有效。这是不可能的,因为DateTime格式和特定输出之间的映射不是同构的(每个输出没有到单个格式的反向映射)-考虑一下11-072011—这是DD MMYYYY还是MM DD YYYY?< P>这是不可能的,因为在 DATESTIM

Parse接受一个字符串并返回等效的DateTime

有没有办法获取解析器正在使用的格式

例如,2011年7月19日将返回M/dd/yyyy,而2011年7月19日将返回dd-M-yyyy


DateTime.TryParseExact如果还返回正在使用的格式,则对我有效。

这是不可能的,因为
DateTime
格式和特定输出之间的映射不是同构的(每个输出没有到单个格式的反向映射)-考虑一下11-072011—这是DD MMYYYY还是MM DD YYYY?

< P>这是不可能的,因为在<代码> DATESTIME/<代码>格式和特定输出之间的映射不是同构的(没有对每个输出的单一格式的逆映射)请考虑一下11-072011—这是DD MMYYYY还是MM DD YYYY?

< P>详见备注部分。

获取其所需格式的最佳方法是读取文档

具体见备注部分


获取其所需格式的最佳方法是读取文档

DateTime.Parse
使用当前线程的当前区域性。
Thread.CurrentThread.CurrentCulture.DateTimeFormat
将为您提供一个可用于检查格式的
DateTimeFormatInfo
的只读实例

属性
ShortDatePattern
就是您要查找的属性


这解决了您关于解析器使用的格式的问题,但无法在事后获取格式。

DateTime。Parse
使用当前线程的当前区域性。
Thread.CurrentThread.CurrentCulture.DateTimeFormat
将为您提供一个可用于检查格式的
DateTimeFormatInfo
的只读实例

属性
ShortDatePattern
就是您要查找的属性


这解决了您关于解析器使用的格式的问题,但无法在事后获得格式。

循环浏览一个格式列表,您每次传递一个到DateTime.TryParseExact


当您最终得到一个真值时,您就可以确切地知道.Net将使用哪种格式来解析它。

循环遍历一个格式列表,每次传递一个到DateTime.TryParseExact


当您最终得到一个真值时,您就确切地知道.Net将使用哪种格式来解析它。

正确。但是你可以说字符串和日期时间之间没有同构关系。但是,解析字符串->DateTime工作正常。@user380719:是的,因为框架使用合理的默认值/对某些格式使用更高的优先级为您解决了任何歧义-否则这将不起作用,您只能在
DateTime.ParseExact()
中指定格式。实际上,这几乎就是我要找的。如果我能传递一个格式数组,它会告诉我它使用哪种格式,我会很高兴。正确。但是你可以说字符串和日期时间之间没有同构关系。但是,解析字符串->DateTime工作正常。@user380719:是的,因为框架使用合理的默认值/对某些格式使用更高的优先级为您解决了任何歧义-否则这将不起作用,您只能在
DateTime.ParseExact()
中指定格式。实际上,这几乎就是我要找的。如果我能传递一组格式,它会告诉我它使用哪种格式,我会很高兴。