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

时间:2013-09-26 04:58:54

标签: c# string date time

我想检查string是否包含1/01/2000格式的10/01/2000dd/MM/yyyy等日期。

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

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

但是如何检查throw an exception的格式是否正确?

8 个答案:

答案 0 :(得分:16)

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
}

答案 1 :(得分:11)

您可以将DateTime.ParseExact与格式字符串

一起使用
DateTime dt = DateTime.ParseExact(inputString, formatString, System.Globalization.CultureInfo.InvariantCulture);

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

如果在格式不正确的情况下不需要异常,请使用DateTime.TryParseExact但是您可以检查该方法的返回值以确定解析值是否成功。

检查Custom Date and Time Format Strings

答案 2 :(得分:5)

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

DateTime.ParseExact(dateString, format, provider);

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

答案 3 :(得分:1)

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

df = df1.join(df2.withColumnRenamed('y1','x1').withColumnRenamed('y2','x2'), ['x1','x2'])

答案 4 :(得分:1)

您可以在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;
    }

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

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
}

答案 5 :(得分:0)

试试这个

DateTime dDate;
dDate = DateTime.TryParse(inputString);
String.Format("{0:d/MM/yyyy}", dDate); 

请参阅此链接以获取更多信息。 http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx

答案 6 :(得分:0)

你总是可以尝试:

Regex r = new Regex(@"\d{2}/\d{2}/\d{4}");

r.isMatch(inputString);

这将检查字符串的格式是&#34; 02/02/2002&#34; 如果你想确保它是一个像dd / mm / yyyy这样的有效日期,你可能需要更多一点

答案 7 :(得分:0)

使用有效日期格式数组,检查docs

string[] formats = { "d/MM/yyyy", "dd/MM/yyyy" };
DateTime parsedDate;
var isValidFormat= DateTime.TryParseExact(inputString, formats, new CultureInfo("en-US"), DateTimeStyles.None, out parsedDate);

if(isValidFormat)
{
    string.Format("{0:d/MM/yyyy}", parsedDate);
}
else
{
    // maybe throw an Exception
}