string
に1/01/2000
や10/01/2000
形式のdd/MM/yyyy
などの日付が含まれているかどうかを確認したい。
これまでのところ、私はこれを試しました。
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
を使用しますが、そのメソッドの戻り値をチェックして、解析値が成功するかどうかを識別できます。
check カスタムの日付と時刻のフォーマット文字列
私は解決策の1つがDateTime.ParseExactまたはDateTime.TryParseExactを使用することだと思う
DateTime.ParseExact(dateString, format, provider);
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
有効な日付形式の配列を使用して、 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
}
あなたはいつも試すことができます:
Regex r = new Regex(@"\d{2}/\d{2}/\d{4}");
r.isMatch(inputString);
これは、文字列が「02/02/2002」の形式であることを確認します。dd/ mm/yyyyのような有効な日付であることを確認する場合は、もう少し必要な場合があります。