12

入力文字列をC# でMM/dd/yyyy hh:mm:ss形式にフォーマットしたいと考えています。
入力文字列の形式は次のとおりですMM/dd/yyyy hh:mm:ss
。例:"04/30/2013 23:00"

関数を試しConvert.ToDateTime()てみましたが、4 を日付、3 を月と見なしますが、これは私が望むものではありません。実際には月は 04、日付は 03 です。

関数も試しDateTime.ParseExact()ましたが、例外が発生しました。

エラーが発生しています:

文字列は有効な DateTime として認識されませんでした。

4

8 に答える 8

16

日時文字列に秒が含まれていません。それをフォーマットに反映する必要があります( を削除します:ss)。また、 24 時間制を使用している場合は代わりに
指定する必要があります。Hh

DateTime.ParseExact("04/30/2013 23:00", "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture)

詳細については、こちらを参照してください。

カスタムの日付と時刻の書式文字列

于 2013-04-15T11:38:22.060 に答える
5

メソッドを使用できますDateTime.ParseExact()

指定された形式とカルチャ固有の形式情報を使用して、指定された日付と時刻の文字列表現を、対応する DateTime に変換します。文字列表現の形式は、指定された形式と正確に一致する必要があります。

DateTime date = DateTime.ParseExact("04/30/2013 23:00", 
                                    "MM/dd/yyyy HH:mm", 
                                    CultureInfo.InvariantCulture);

ここに がありDEMOます。

hhは 01 から 12 までの 12HH時間制、 は 00 から 23 までの 24 時間制です。

詳細については、Custom Date and Time Format Strings

于 2013-04-15T11:39:34.377 に答える
3

これを試して:

string strTime = "04/30/2013 23:00";
DateTime dtTime;
if(DateTime.TryParseExact(strTime, "MM/dd/yyyy HH:mm",  
   System.Globalization.CultureInfo.InvariantCulture, 
   System.Globalization.DateTimeStyles.None, out dtTime))
 {
    Console.WriteLine(dtTime);
 }
于 2013-04-15T11:38:36.363 に答える
1

文化を変えて、このように試してみてください

string[] formats= { "MM/dd/yyyy HH:mm" }
var dateTime = DateTime.ParseExact("04/30/2013 23:00", 
     formats, new CultureInfo("en-US"), DateTimeStyles.None);

詳細を確認してください: DateTime.ParseExact メソッド (文字列、文字列[]、IFormatProvider、DateTimeStyles)

于 2013-04-15T11:38:06.667 に答える
0
DateTime dt1 = DateTime.ParseExact([YourDate], "dd-MM-yyyy HH:mm:ss",  
                                           CultureInfo.InvariantCulture);

hh (12 時間制) ではなく HH (24 時間制) の使用と、一部のカルチャではスラッシュ以外の区切り記号が使用されるため、InvariantCulture の使用に注意してください。

たとえば、カルチャが de-DE の場合、"dd/MM/yyyy" の形式では区切り記号としてピリオドが必要になります (31.01.2011)。

于 2016-07-18T13:51:54.863 に答える