![](/img/trans.png)
[英]c# How to extract just the format from a string containing a format (e.g. string = "Printed on {0:dd MMM yyyy}" and I want dd MMM yyyy
[英]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
並適當地指定預期的格式字符串。
您可以使用正則表達式。 對於日期,如果您想要考慮允許任何月份和閏年的天數,它可能會很毛茸茸。 也許兩步法更容易。
另一種將日期轉換為首選格式的簡單方法:
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.