检查字符串是否采用特定的日期格式

时间:2018-06-29 23:14:18

标签: c# date xamarin.forms format

您好,我收到的日期格式为 yyyy-MM-dd 的字符串,但我想将其与 dd-MM-yyyy 格式的字符串进行比较这是不一样的,肯定不是,我要转换它,对我来说,这不是转换,而是比较两种格式... 所以我想也许是这样的

var dt = obj.date; //this a string

if (dt.formatDateorsomethingIguess == "dd/MM/yyyy") //this is the part I'm asking for
{
     usedt(dt);
} 
else 
{
    DateTime dt_format = DateTime.ParseExact(dt.Trim(), "dd-MM-yyyy",
    System.Globalization.CultureInfo.InvariantCulture);
    usedt(dt_format);
}

2 个答案:

答案 0 :(得分:1)

您可以通过几次致电see here来解决此问题:

public static DateTime ParseDate(string input)
{
    DateTime result;

    if (DateTime.TryParseExact(input, "yyyy-MM-dd", CultureInfo.CurrentCulture, DateTimeStyles.None, out result)) return result;
    if (DateTime.TryParseExact(input, "dd-MM-yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, out result)) return result;

    throw new FormatException();
}

快速测试一下

public static void Main()
{
    string[] tests = new string[] { "2018-06-29", "29-06-2018","Invalid" };

    foreach (var t in tests)
    {
        var result = ParseDate(t);
        Console.WriteLine( "Year: {0}  Month: {1}  Day: {2}", result.Year, result.Month, result.Day );
    }
}

输出:

Year: 2018  Month: 6  Day: 29
Year: 2018  Month: 6  Day: 29
Run-time exception (line 18): One of the identified items was in an invalid format.

TryParseExact

答案 1 :(得分:1)

您是否尝试过查看正则表达式?

我找到了这个>(([[1-2] [0-9])|([1-9])|(3 [0-1]))/((1 [0-2])| ([1-9]))/ [0-9] {4}

与1995年3月21日匹配