簡體   English   中英

如何查看日期格式c#

[英]How to check date format c#

我這里有ac#代碼塊:

    string inputString = textBox1.Text;
    DateTime dt;
    try
    {
        if (DateTime.TryParseExact(inputString, "yyyyMMdd", null, DateTimeStyles.None, out dt) == true)
        {
            dt = dt.AddMonths(6);
            textBox2.Text = dt.ToString("yyyyMMdd");
        }
        else if (DateTime.TryParseExact(inputString, "yyyy.MM.dd", null, DateTimeStyles.None, out dt) == true)
        {
            dt = dt.AddMonths(6);
            textBox2.Text = dt.ToString("yyyyMMdd");
        }
    }   
    catch (Exception ex) { MessageBox.Show(ex.Message); }

基本上,它的作用是,用戶在textbox1中輸入一個字符串,在按鈕點擊時,C#將檢查文本框中的日期格式,然后在日期上添加6個月並將其在textbox2中輸出為字符串格式yyyyMMdd。 如您所見,它接受yyyyMMdd和yyyy.MM.dd並執行相同的過程。 但我的問題是我還有很多日期格式:

dd-MM-yy 
yyyy/mm/dd 
yyyy-mm-dd 
yy/mm/dd 

我不想在我的IF語句中使用OR。 有沒有像格式那樣的方式,將被接受並執行該過程。 非常感謝!

TryParseExact的 一個 重載接受一個字符串數組作為它的第二個參數。 但是,它不會告訴您確切使用的格式。 如果你確實需要這些信息,那么是的,你只需要運行你想要的每種格式的單格式TryParseExact,看看哪種格式有效。

當然,您需要確保您允許的所有格式都明確指出哪些部分是日,月和年,否則您可能會將01/02/03解析為六個可能日期中的任何一個。

DateTime.TryParseExact有一個重載,它接受多種格式來嘗試解析。

DateTime date;
DateTime.TryParseExact("11-Nov-13", new[] { "yyyy-MM-dd","MM/dd/yy","dd-MMM-yy"}, null, DateTimeStyles.None, out date); 

然而,李泰勒的評論仍然是正確的,因為如果你的格式可能含糊不清,你就不會確切地知道什么是錯的。

如果您的解決方案要求您使用與提供的相同的樣式返回格式化字符串 - 那么您需要將格式傳遞給循環並單獨嘗試。

您可以使用CultureInfo.CurrentUICulture.DateTimeFormat.GetAllDateTimePatterns()檢查所有可能的格式,該文件存在於命名空間System.Globalization下。

您可以使用DateTime.TryParseExact ,它具有接受多種格式的重載以嘗試解析 - ParseExact(字符串s,字符串[]格式,IFormatProvider提供程序,DateTimeStyles樣式)

示例代碼:

private DateTime GetDate(string date)
{
    DateTime dateTime = new DateTime();
    string[] formats = CultureInfo.CurrentUICulture.DateTimeFormat.GetAllDateTimePatterns();

    try
    {
        dateTime = DateTime.ParseExact(date, formats, CultureInfo.InvariantCulture, DateTimeStyles.None);
    }
    catch
    {
        throw ...;
    }

    return dateTime;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM