文字列値を日付時刻値に解析する必要があります。日付は次の形式になっています。
DD.MM.YYYY
この形式で値を解析したい:
YYYY-MM-DD
私はこのようにそれをやろうとしました:
DateTime.ParseExact(date_req, "yyyy-MM-dd", CultureInfo.InvariantCulture);
しかし、エラーがあります。文字列が有効な日時として認識されませんでした。
これを行う方法はありますか?
文字列値を日付時刻値に解析する必要があります。日付は次の形式になっています。
DD.MM.YYYY
この形式で値を解析したい:
YYYY-MM-DD
私はこのようにそれをやろうとしました:
DateTime.ParseExact(date_req, "yyyy-MM-dd", CultureInfo.InvariantCulture);
しかし、エラーがあります。文字列が有効な日時として認識されませんでした。
これを行う方法はありますか?
この形式の文字列がある場合、DD.MM.YYYY
なぜYYYY-MM-DD
ParseExact関数に渡すのですか?
このようにしてみてください:
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");
日付を解析するときは、後で出力する形式ではなく、読み取りたい形式を指定する必要があります。
したがってdd.MM.yyyy
、の引数として使用しますParseExact
。
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);
あなたがしたいことは、あなた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
日付を文字列から文字列へ、またはその逆に変換するときは、カルチャとタイム ゾーンに注意する必要があることを忘れないでください。
最初に既存の形式で解析してから、必要な文字列形式に変換します。
var date = DateTime.ParseExact(date_req, "dd.MM.yyyy", CultureInfo.InvariantCulture);
var str = date.ToString("yyyy-MM-dd");
最初にそれを文字配列に変換できます。次に、日/月/年を個別に整数に解析できます。あなたは数字のインデックスを知っているので、これは簡単です。その後、すべての要素を好きなように連結できます。
エラー。あなたはケーキを持っていて、ステークを食べたいと思っています。ケーキが杭であることを胃に納得させるには、ケーキを杭に変える必要があります。これはできません。解析とは、値が来ると受け入れ、パターン (またはそれ以上) を使用してそれを別のものに変換し、変換しないことです。だからあなたが望むことは正しいかもしれませんが、あなたが尋ねることは間違っています.