看到一个奇怪的问题,在某些系统上,以下代码进入 if 语句(即返回 true),而在其他系统中,它返回 false 并进入 else 语句。我在更改的地方缺少哪些环境条件或框架版本更改?例如 .net Fiddle 返回 true,但我自己的控制台应用程序返回 false。
DateTime time;
formatText = "";
if (DateTime.TryParse (DateTime.Now.ToString(formatText), CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal, out time))
{
// If TryParseExact Worked
Console.WriteLine ("True: " + time.ToString ());
}
else
{
// If TryParseExact Failed
Console.WriteLine ("Failed to Parse Date");
}
最佳答案
DateTime
的字符串表示形式是特定于文化的。
传递空字符串或 null
作为 DateTime
的 ToString
重载的 format
参数是相同的通过standard format specifier "G"
- 来自 DateTime.ToString Method (String) 的备注部分msdn 页面:
If format is null or an empty string, the general format specifier, 'G', is used.
您使用的 TryParse
重载尝试使用 IFormatProvider
格式参数中提供的日期和时间格式来解析 DateTime
值 - InvariantCulture
在您的情况下 - 所以当您将 TryParse
与 InvariantCulture
一起使用时,除非您当前区域性的 ShortDatePattern
和 LongTimePattern
属性与 InvariantCulture
中的相同,tryParse
将失败。
关于c# - 空字符串 ""何时是有效的日期时间字符串格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49385474/