从C#中的字符串检查日期格式

Use*_*501 18 c# string time date

我要检查是否string包含日期等1/01/2000,并10/01/2000dd/MM/yyyy格式.

到目前为止,我已经尝试过了.

DateTime dDate = DateTime.Parse(inputString);
string.Format("{0:d/MM/yyyy}", dDate); 
Run Code Online (Sandbox Code Playgroud)

但是,如何检查该格式是否正确throw an exception

Nad*_*_MK 23

string inputString = "2000-02-02";
DateTime dDate;

if (DateTime.TryParse(inputString, out dDate))
{
    String.Format("{0:d/MM/yyyy}", dDate); 
}
else
{
    Console.WriteLine("Invalid"); // <-- Control flow goes here
}
Run Code Online (Sandbox Code Playgroud)


Dam*_*ith 11

你可以使用DateTime.ParseExact格式字符串

DateTime dt = DateTime.ParseExact(inputString, formatString, System.Globalization.CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

如果给定的字符串不是给定格式,则上面将抛出异常.

使用DateTime.TryParseExact,如果你不需要的格式不正确的情况下例外,但你可以检查方法的返回值,以确定是否解析值的成功与否.

检查自定义日期和时间格式字符串


小智 6

https://msdn.microsoft.com/es-es/library/h9b85w22(v=vs.110).aspx

string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", 
                     "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", 
                     "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", 
                     "M/d/yyyy h:mm", "M/d/yyyy h:mm", 
                     "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"};
  string[] dateStrings = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM", 
                          "5/1/2009 6:32:00", "05/01/2009 06:32", 
                          "05/01/2009 06:32:00 PM", "05/01/2009 06:32:00"}; 
  DateTime dateValue;

  foreach (string dateString in dateStrings)
  {
     if (DateTime.TryParseExact(dateString, formats, 
                                new CultureInfo("en-US"), 
                                DateTimeStyles.None, 
                                out dateValue))
        Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
     else
        Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
  }
Run Code Online (Sandbox Code Playgroud)


Kri*_*ana 5

我认为其中一个解决方案是使用DateTime.ParseExact或DateTime.TryParseExact

DateTime.ParseExact(dateString, format, provider);
Run Code Online (Sandbox Code Playgroud)

来源:http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx


R.S*_*S.K 5

您可以在以下 IsValidDate() 中使用:

 public static bool IsValidDate(string value, string[] dateFormats)
    {
        DateTime tempDate;
        bool validDate = DateTime.TryParseExact(value, dateFormats, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, ref tempDate);
        if (validDate)
            return true;
        else
            return false;
    }
Run Code Online (Sandbox Code Playgroud)

您可以传入值和日期格式。例如:

var data = "02-08-2019";
var dateFormats = {"dd.MM.yyyy", "dd-MM-yyyy", "dd/MM/yyyy"}

if (IsValidDate(data, dateFormats))
{
    //Do something
}
else
{
    //Do something else
}
Run Code Online (Sandbox Code Playgroud)