我很想了解DateTime.Parse(String s, IFormatProvider,DateTimeStyles)
方法中的DateTimeStyles的用法
基本上DateTimeStyles
像AllowInnerWhite
,AllowLeadingWhite
以及其他处理“空白字符”的其他字符一样填充
根据msdn.microsoft,这些字段用于忽略要转换为Datetime
值的字符串中的空格
我尝试了
var TestDate = "\"t\"31/07/1998 12:00:00";
// Try To parse with en-GB culture
var result1 = DateTime.Parse(TestDate, CultureInfo.CreateSpecificCulture("en-GB"),DateTimeStyles.AllowWhiteSpaces);
Console.WriteLine(result1);
但是我有例外
对于初学者,我没有找到任何可以说明空白概念的示例,而这些字段涉及空白。
对我来说,我认为转义字符是C#中的空格之一,这就是为什么用来查看会发生什么的原因!
有人可以帮我提供有关这两点的一些示例吗?空白,带空白的DateTimeStyles
答案 0 :(得分:3)
正如评论中的其他人所提到的,表达式中有一个文字"
,它不是空格,而是无效的字符。这就是为什么您的值无法解析的原因。
要解决您的其他问题:
有人可以帮我举一些有关带空格的DateTimeStyles的示例。
显然,Allow*
值仅与(Try)ParseExact
相关,与(Try)Parse
(MSDN)不相关:
ParseExact
和TryParseExact
方法可以使用任何DateTimeStyles
值。但是,如果未选择Allow *值,则输入字符串必须与格式字符串具有完全相同的空格字符。
示例:
string s = "\t 1998-07-31 12:00:00Z "; // has leading and trailing whitespace
DateTime dt;
// Prints True: (Try)Parse does not care.
Console.WriteLine(DateTime.TryParse(s, null, DateTimeStyles.None, out dt));
// Prints False: (Try)ParseExact does not like whitespace.
Console.WriteLine(DateTime.TryParseExact(s, "u", null, DateTimeStyles.None, out dt));
// Prints True: (Try)ParseExact accepts whitespace, if we tell it to.
Console.WriteLine(DateTime.TryParseExact(s, "u", null, DateTimeStyles.AllowWhiteSpaces, out dt));
答案 1 :(得分:2)
使用\
时,是在告诉编译器将后来出现的内容称为字面租约人。
因此,您尝试解析以"t"
开头的日期timme字符串。
您可以解析"31/07/1998 12:00:00"