什么时候是空字符串“”有效的DateTime字符串格式?

时间:2018-03-20 13:24:46

标签: c# .net parsing datetime datetime-format

看到一个奇怪的问题,在某些系统上,下面的代码进入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");
    } 

1 个答案:

答案 0 :(得分:3)

DateTime的字符串表示是特定于文化的。

传递一个空字符串或null作为format ToString重载的DateTime参数与传递standard format specifier "G"相同 - 来自备注DateTime.ToString Method (String) msdn页面的一部分:

  

如果format为null或空字符串,则使用通用格式说明符'G'。

您使用的TryParse重载尝试使用DateTime格式参数 - IFormatProvider中可用的日期和时间格式解析InvariantCulture值 - 所以当TryParseInvariantCulture一起使用时,除非您当前文化的ShortDatePatternLongTimePattern属性与InvariantCulture中的属性相同,否则tryParse将失败