簡體   English   中英

如何檢查日期是否格式正確,即yyyy-mmm-dd?

[英]How to check if date is in correct format i.e. yyyy-mmm-dd?

我正在從服務調用接收數據,並希望確保字符串的格式正確,如:

2015-Nov-19

我試圖使用格式為yyyy-mmm-dd解析函數,但它也允許像2015-11-19這樣的日期。 我該怎么辦?

您需要使用MMM說明符而不是mmm與基於英語的文化,如InvariantCulture 沒有mmm作為自定義日期和時間說明符。

如果你想解析多種格式, DateTime.TryParseExact有一個重載 ,它將string[]作為參數,因此你可以提供多種格式。

string s = "2015-Nov-19"; // or 2015-11-19
DateTime dt;
string[] formats = {"yyyy-MMM-dd", "yyyy-MM-dd"};
if(DateTime.TryParseExact(s, formats, CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
    // Successfully parse
}

我使用第二種格式的MM說明符,但如果您的單個數字月份沒有前導零,則需要使用M說明符。

使用DateTime.TryParseExact

DateTime dt;
string[] formats = { "yyyy-MMM-dd"};
if (!DateTime.TryParseExact(dateValue, formats, 
                System.Globalization.CultureInfo.InvariantCulture,
                DateTimeStyles.None, out dt))
{
    //your condition fail code goes here
    return false;
}
else
{
    //success code
}

使用DateTime.TryParseExact並適當地指定預期的格式字符串。

您可以使用正則表達式。 對於日期,如果您想要考慮允許任何月份和閏年的天數,它可能會很毛茸茸。 也許兩步法更容易。

  1. 使用正則表達式檢查格式是否正確。
  2. 通過將數據轉換為日期並捕獲任何異常來檢查數據是否正確。

另一種將日期轉換為首選格式的簡單方法:

DateTime dt = DateTime.Now;

Console.WriteLine(dt.ToString("yyyy-MMM-dd HH:SS"));

您可以在字符串中放置您想要的任何格式。 要轉換為字符串的對象必須是DateTime對象。 您可以稍后將字符串重新轉換為DateTime。

使用這段代碼:

        string stringdate = "2015-Nov-19";

        DateTime date = Convert.ToDateTime(stringdate);

        string tempdate = date.ToString("yyyy-MMM-dd");

        if (tempdate == stringdate)
        {
            // Successfully parsed string goes here 
        }

它從字符串中檢查日期是否為特定格式,如果是特定格式,則不會成功解析。 並且它不會解析您想要的2015-11-19之類的日期。

暫無
暫無

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

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