-1

文字列値を日付時刻値に解析する必要があります。日付は次の形式になっています。

DD.MM.YYYY

この形式で値を解析したい:

YYYY-MM-DD

私はこのようにそれをやろうとしました:

DateTime.ParseExact(date_req, "yyyy-MM-dd", CultureInfo.InvariantCulture); 

しかし、エラーがあります。文字列が有効な日時として認識されませんでした。

これを行う方法はありますか?

4

7 に答える 7

3

この形式の文字列がある場合、DD.MM.YYYYなぜYYYY-MM-DDParseExact関数に渡すのですか?

このようにしてみてください:

string dateStr = "12.06.2012";
DateTime date = DateTime.ParseExact(dateStr, "dd.MM.yyyy", CultureInfo.InvariantCulture);

次に、このDateTimeインスタンスをどこかに出力する場合は、次のYYYY-MM-DDような形式を使用できます。

string result = date.ToString("yyyy-MM-dd");
于 2012-06-13T11:23:03.580 に答える
1

日付を解析するときは、後で出力する形式ではなく、読み取りたい形式を指定する必要があります。

したがってdd.MM.yyyy、の引数として使用しますParseExact

于 2012-06-13T11:23:47.667 に答える
1

Check DateTime.ParseExactメソッド(String、String、IFormatProvider) 日付と時刻の指定された文字列表現を同等のDateTimeに変換します。文字列表現の形式は、指定された形式と正確に一致する必要があります。一致しない場合、例外がスローされます。

フォーマット文字列をDD.MM.YYYYではなくとして指定する必要があります"yyyy-MM-dd"

これを試して:

DateTime dateValue = DateTime.ParseExact(date_req, "DD.MM.YYYY", CultureInfo.InvariantCulture );

// use this when you need to show that formatted date value
string formattedDate = dateValue.ToString("yyyy-MM-dd");

より良い方法は、DateTime.TryParseExactメソッドを使用することです。文字列ではなく日付として使用する場合は、カルチャ情報と日付区切り文字を変更します。

CultureInfo enUS = new CultureInfo("en-US"); 
string dateString;
DateTime dateValue;
dateString = "05.01.2009"; 
if (DateTime.TryParseExact(dateString, "DD.MM.YYYY", enUS, 
                        DateTimeStyles.None, out dateValue))
   Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                     dateValue.Kind);
else
   Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
于 2012-06-13T11:24:57.260 に答える
1

あなたがしたいことは、あなたdd.MM.yyyyを解析して、それを として表示することだと思いますyyyy-MM-dd

最初に を に解析する必要がstringありDateTimeます:

DateTime date = DateTime.ParseExact(date_req, "yyyy-MM-dd", CultureInfo.InvariantCulture); 

これdateは、コンピューターが実際に理解できる日付の表現です (単なる文字列になる前)。このオブジェクトを好きなように表示できるようになりました。

string yyyyMMdd = date.ToString("yyyy-MM-dd");
string arabic = date.ToString("yyyy-MM-dd", new CultureInfo("ar"));
// and so on

DateTime日付を文字列から文字列へ、またはその逆に変換するときは、カルチャとタイム ゾーンに注意する必要があることを忘れないでください。

于 2012-06-13T11:28:44.907 に答える
0

最初に既存の形式で解析してから、必要な文字列形式に変換します。

var date = DateTime.ParseExact(date_req, "dd.MM.yyyy", CultureInfo.InvariantCulture); 
var str = date.ToString("yyyy-MM-dd");
于 2012-06-13T11:25:04.063 に答える
0

最初にそれを文字配列に変換できます。次に、日/月/年を個別に整数に解析できます。あなたは数字のインデックスを知っているので、これは簡単です。その後、すべての要素を好きなように連結できます。

于 2012-06-13T11:25:07.683 に答える
0

エラー。あなたはケーキを持っていて、ステークを食べたいと思っています。ケーキが杭であることを胃に納得させるには、ケーキを杭に変える必要があります。これはできません。解析とは、値が来ると受け入れ、パターン (またはそれ以上) を使用してそれを別のものに変換し、変換しないことです。だからあなたが望むことは正しいかもしれませんが、あなたが尋ねることは間違っています.

于 2012-06-13T11:28:52.797 に答える