簡體   English   中英

從C#中的字符串檢查日期格式

[英]Checking Date format from a string in C#

我想檢查一個string是否包含dd/MM/yyyy格式的日期,例如1/01/200010/01/2000

到目前為止,我已經嘗試過了。

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

但是如何檢查該格式是否正確以throw an exception

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
}

您可以將DateTime.ParseExact與格式字符串一起使用

DateTime dt = DateTime.ParseExact(inputString, formatString, System.Globalization.CultureInfo.InvariantCulture);

如果給定的字符串不是給定格式,則上面將拋出異常。

如果在格式不正確的情況下不需要異常,則使用DateTime.TryParseExact但是您可以檢查該方法的返回值以確定解析值是否成功。

檢查自定義日期和時間格式字符串

我認為其中一個解決方案是使用DateTime.ParseExact或DateTime.TryParseExact

DateTime.ParseExact(dateString, format, provider);

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

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

string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", 
                     "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", 
                     "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", 
                     "M/d/yyyy h:mm", "M/d/yyyy h:mm", 
                     "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"};
  string[] dateStrings = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM", 
                          "5/1/2009 6:32:00", "05/01/2009 06:32", 
                          "05/01/2009 06:32:00 PM", "05/01/2009 06:32:00"}; 
  DateTime dateValue;

  foreach (string dateString in dateStrings)
  {
     if (DateTime.TryParseExact(dateString, formats, 
                                new CultureInfo("en-US"), 
                                DateTimeStyles.None, 
                                out dateValue))
        Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
     else
        Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
  }

試試這個

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

有關詳細信息,請參閱此鏈接。 http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx

你總是可以嘗試:

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

r.isMatch(inputString);

這將檢查字符串格式為“02/02/2002”如果你想確保它是一個有效的日期,如dd / mm / yyyy,你可能需要更多一點

使用有效日期格式數組,檢查文檔

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
}

暫無
暫無

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

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