C# DateTimeStyles和空白字符
我试图了解datetimestyle在C# DateTimeStyles和空白字符,c#,datetime,whitespace,C#,Datetime,Whitespace,我试图了解datetimestyle在DateTime.Parse(strings,IFormatProvider,datetimestyle)方法中的用法 基本上,datetimestyle是像allownerwhite、allowreadingwhite和其他处理“空白字符”的样式一样填充的 根据msdn.microsoft,这些字段用于在我们要转换为Datetime值的字符串中忽略空格 我试过这样的东西 var TestDate = "\"t\"31/07/1998 12:
DateTime.Parse(strings,IFormatProvider,datetimestyle)
方法中的用法
基本上,datetimestyle
是像allownerwhite
、allowreadingwhite
和其他处理“空白字符”的样式一样填充的
根据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#中的一个空白,这就是为什么用它来观察会发生什么
有人能帮我举一些关于这两点的例子吗?空格,带空格的日期时间样式当你使用
\
时,你告诉编译器要引用后面的文本承租人。这就是为什么在您的例子中,您试图解析以
“t”
开头的日期计时字符串
您可以解析
“31/07/1998 12:00:00”
正如评论中的其他人所提到的,您的表达式中有一个文本“
,它不是空白,而是一个无效字符。这就是您的值无法解析的原因
要回答你的另一个问题: 有谁能帮我举一些关于带空格的日期时间样式的例子吗 显然,
Allow*
值仅与(Try)ParseExact
相关,而与(Try)Parse
()无关:
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));
您的测试字符串中有文本
“
字符,这些字符不是空白,因此不会被忽略-因此出现异常“\t31/07/1998 12:00:00”
将进行分析。使用trim删除结尾的空格:var result1=DateTime.parse(TestDate.trim()、CultureInfo.CreateSpecificCulture(“en GB”)、DateTimeStyles.allowHiteSpaces);控制台写入线(结果1);一旦输入被固定为实际包含制表符和空格,则无需重新编程Parse
也可以工作。OP的字符串不正确地使用转义,因此它以双引号而不是制表符结束DateTime.Parse(“\t31/07/1998 12:00:00”,CultureInfo.CreateSpecificCulture(“en GB”),DateTimeStyles.AllowHiteSpaces)
throw@PanagiotisKanavos字体我知道。我的回答回答了“有谁能帮我举一些关于两点空格和带空格的DateTimeStyles的例子吗?”。我现在已经说得更清楚了,也解决了打字错误。我明白你的意思:我尝试了日期时间样式。没有
,没有exception@Heinzi-如果我对var s=“\t 1998-07-31 12:00:00Z”
使用Parse方法,并且不使用任何日期时间样式,pares方法也可以工作。如果解析操作没有问题,为什么我会使用dateTimeStyles(AllowHiteSpaces?!一般来说,为什么我会忽略字符串中的空格?