3

この形式の文字列があります:19/8/1988

ノート:String DateOfBirth=" 19/8/1988"

私が使用するDatetime.parse(DateOfBirth)と、私に与えますinvalid dateformat error

私もそれを行うことができませんcdate(DateOfBirth)

mm/dd/yyyy の形式で文字列を入力すると、8/19/1988エラーは発生しません。

mm/ddd/yyyy文字列を日付形式に変換するのを手伝ってください。

4

4 に答える 4

6

小文字は月ではなく分を意味します。大文字(1 文字)mmを使用する必要があります。M

ParseExactただし、と一緒に使用する必要もありますCultureInfo.InvariantCulture。それ以外の場合は、現在のカルチャを使用して日付区切り記号を取得しますが、これは必ずしもそうではありません/(多くの国ではそうです.)。

したがって、これはどの文化でも機能します。

DateTime.ParseExact("19/8/1988", "dd/M/yyyy", CultureInfo.InvariantCulture)

Demo

"/" カスタム書式指定子

特定の日付文字列を検証する場合は、次を使用できますDateTime.TryParseExact

DateTime dt; 
if(DateTime.TryParseExact("19/8/1988", "dd/M/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)) 
{
    // success, dt contains the correct date now
} 
else 
{
    // not a valid date 
}
于 2013-08-27T09:11:00.687 に答える
2

日時の前にスペースがあることに注意してください。特定の形式を使用して DateTime に解析する前に、その文字列を削除する必要があります

var date = DateTime.ParseExact(DateOfBirth.Trim(), "d/M/yyyy", CultureInfo.InvariantCulture);

複数の日時形式がある場合

var date = DateTime.ParseExact(DateOfBirth.Trim(), new string[] {"d/M/yyyy","M/d/yyyy"} , CultureInfo.InvariantCulture, DateTimeStyles.None);
于 2013-08-27T09:10:29.137 に答える
1

エラーの原因はわかっています。システムの日時のデフォルトは米国の日時形式(mm/dd/yyyy)としてシステムでこの形式control panel --> regional and languages --> formats --> additional settings-->を変更し、日付に移動して目的の形式を変更します。これは手動で問題を解決するか、プログラムでこの方法で解決します

DateTime.ParseExact("19/8/1988", "dd/M/yyyy", CultureInfo.InvariantCulture)
于 2013-08-27T14:44:21.590 に答える