C#:这段代码有什么错误?

Inf*_*nd' -1 c#

using System;
using System.Globalization;

namespace ConsoleApplication20
{
    class Program
    {

        static void Main(string[] args)
        {     

string[] formats ={
            "MM/dd/yyyy HH:mm:ss tt",
            "MM/dd/yyyy HH:mm:ss",
            "MM/dd/yyyy H:mm:ss tt",
            "MM/dd/yyyy H:mm:ss",
            "M/dd/yyyy HH:mm:ss tt",
            "M/dd/yyyy HH:mm:ss",
            "M/dd/yyyy H:mm:ss tt",
            "M/dd/yyyy H:mm:ss",
            "MM/d/yyyy HH:mm:ss tt",
            "MM/d/yyyy HH:mm:ss",
            "MM/d/yyyy H:mm:ss tt",
            "MM/d/yyyy H:mm:ss", 
            "M/d/yyyy HH:mm:ss tt",   
            "M/d/yyyy HH:mm:ss", 
            "M/d/yyyy H:mm:ss tt", 
            "M/d/yyyy H:mm:ss"     
          };
        string date1 = "11/08/2008 4:00:49";

        DateTime result;
        if (DateTime.TryParseExact(date1, formats,
                          new CultureInfo("en-US"),
                          DateTimeStyles.None,
                          out result))
        {
            DateTime startTime = result;
        }

        Console.Write(startTime);

   }
    }
}
Run Code Online (Sandbox Code Playgroud)

请解释我..为什么总是if语句返回false ..



Thanx寻求帮助和支持,Rik,Phillip,JoelKent以及其他所有人..

Ken*_*art 20

您已将startTime声明在要从中打印出来的不同块的范围内.尝试更改为:

if (DateTime.TryParseExact(date1, formats,
    new CultureInfo("en-US"),
    DateTimeStyles.None,
    out result))
{
    DateTime startTime = result;
    Console.Write(startTime);
}
Run Code Online (Sandbox Code Playgroud)


Rik*_*Rik 8

你应该声明(并初始化)

DateTime startTime
Run Code Online (Sandbox Code Playgroud)

在IF声明之外,或

Console.WriteLine(startTime)
Run Code Online (Sandbox Code Playgroud)

在IF声明中.

您可以尝试将DateTimeStyles参数的值更改为AssumeLocal或AssumeUniversal(根据您的需要),以允许缺少时区规范.

  • 我猜测AssumeLocal或AssumeUniversal,取决于你的需要. (2认同)

Joe*_*orn 5

Kent Boggart确定了您的编译器错误,但我注意到您的格式存在另一个问题.您正在混合使用不同月,日,小时和上午/下午格式的组合,但您只对小时格式使用大写"H".大写'H'表示使用24小时时间,而小写'h'表示使用12小时时间.因此,对于没有'tt'选项的样本,您应该只有大写的'H',如下所示:

string[] formats ={
        "MM/dd/yyyy hh:mm:ss tt",
        "MM/dd/yyyy HH:mm:ss",
        ....
};
Run Code Online (Sandbox Code Playgroud)