web-dev-qa-db-ja.com

C#で文字列から日付形式を確認する

string1/01/200010/01/2000形式のdd/MM/yyyyなどの日付が含まれているかどうかを確認したい。

これまでのところ、私はこれを試しました。

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

しかし、その形式がthrow an exceptionに正しいかどうかを確認するにはどうすればよいですか?

16
User1204501
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
}
21
Nadeem_MK

DateTime.ParseExactをフォーマット文字列で使用できます

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

指定された文字列が指定された形式でない場合、上記は例外をスローします。

フォーマットが正しくない場合に例外を必要としない場合はDateTime.TryParseExactを使用しますが、そのメソッドの戻り値をチェックして、解析値が成功するかどうかを識別できます。

check カスタムの日付と時刻のフォーマット文字列

11
Damith

私は解決策の1つがDateTime.ParseExactまたはDateTime.TryParseExactを使用することだと思う

DateTime.ParseExact(dateString, format, provider);

ソース: http://msdn.Microsoft.com/en-us/library/w2sa9yss.aspx

5
KrishnaDhungana

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);
  }
1

これを試して

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

詳細については、このリンクを参照してください。 http://msdn.Microsoft.com/en-us/library/ch92fbc1.aspx

0
Ajay P

有効な日付形式の配列を使用して、 docs を確認してください。

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
}
0
Yasel

あなたはいつも試すことができます:

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

r.isMatch(inputString);

これは、文字列が「02/02/2002」の形式であることを確認します。dd/ mm/yyyyのような有効な日付であることを確認する場合は、もう少し必要な場合があります。

0
Silverstar