13

私は2つの文字列を持っています:

string one = "13/02/09";
string two = "2:35:10 PM";

これら2つを組み合わせて、に変換したいと思いDateTimeます。

次のことを試しましたが、うまくいきません。

DateTime dt = Convert.ToDateTime(one + " " + two);
DateTime dt1 = DateTime.ParseExact(one + " " + two, "dd/MM/yy HH:mm:ss tt", CultureInfo.InvariantCulture);

これを機能させるにはどうすればよいですか?

4

9 に答える 9

15

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

string one = "13/02/09";
string two = "2:35:10 PM";

DateTime dt = Convert.ToDateTime(one + " " + two);
DateTime dt1 = DateTime.ParseExact(one + " " + two, "dd/MM/yy h:mm:ss tt", CultureInfo.InvariantCulture);

Console.WriteLine(dt1);

ここにデモがあります。

00からまでの 24 時間時計を使用したHH23。例えば; 1:45:30 AM -> 011:45:30 PM -> 13

h 1 から 12 までの 12 時間時計を使用します。1:45:30 AM -> 11:45:30 PM -> 1

詳細については、カスタムの日付と時刻の書式文字列を確認してください

于 2013-02-18T09:33:33.267 に答える
3

あなたの問題は時間指定子にあります。必要なh( 1 から 12 までの 12 時間制を使用した時間) であり、HH( 00 から 23 までの 24 時間制を使用した時間) ではありません。

于 2013-02-18T09:28:58.157 に答える
2

DateTime文字列値の形式に一致するカルチャ情報を使用してみてください。

DateTime dt = Convert.ToDateTime(one + " " + two,
    CultureInfo.GetCultureInfo("ro-RO"));

または、時間が 2 桁になるように入力文字列を変更します。

string one = "13/02/09";
string two = "02:35:10 PM";
DateTime dt1 = DateTime.ParseExact(one + " " + two, 
    "dd/MM/yy HH:mm:ss tt",
    CultureInfo.InvariantCulture);
于 2013-02-18T09:31:11.560 に答える
0

Convert.ToDateTime現在のスレッドのカルチャで使用DateTime.ParseExactされるため、次のようにするだけで物事を少し明確にすることができます。

string date = "13/02/09";
string time = "2:35:10 PM";
DateTime dateTime = DateTime.Parse(date +" "+ time, new CultureInfo("en-GB"));
Console.WriteLine (dateTime);

これにより結果が得られ13/02/2009 14:35:10、解析で en-GB 日時形式を使用するように強制されます。とにかく、Windows インストールが en-GB である場合、CultureInfo(..)引数は必要ありません。

于 2013-02-18T09:54:40.883 に答える
0

次のコードは、あなたが望むことを行います。日付の d/m/y 構造を処理するために、英国の文化を使用しました。

        string string1 = "13/2/09";
        string string2 = "2:35:10 PM";
        DateTime combined = DateTime.Parse(string1 + ' ' + string2, new CultureInfo("UK"));
于 2013-02-18T09:35:15.143 に答える