DateTimeStyles和WhiteSpaces字符

时间:2018-08-09 12:34:54

标签: c# datetime whitespace

我很想了解DateTime.Parse(String s, IFormatProvider,DateTimeStyles)方法中的DateTimeStyles的用法

基本上DateTimeStylesAllowInnerWhiteAllowLeadingWhite以及其他处理“空白字符”的其他字符一样填充

根据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

2 个答案:

答案 0 :(得分:3)

正如评论中的其他人所提到的,表达式中有一个文字",它不是空格,而是无效的字符。这就是为什么您的值无法解析的原因。


要解决您的其他问题:

  

有人可以帮我举一些有关带空格的DateTimeStyles的示例。

显然,Allow*值仅与(Try)ParseExact相关,与(Try)ParseMSDN)不相关:

  

ParseExactTryParseExact方法可以使用任何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"