web-dev-qa-db-ja.com

2つの文字列(日付と時刻)を1つのDateTimeに結合する方法

私は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);

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

12
user2082630

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

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);

これが[〜#〜] demo [〜#〜]です。

[〜#〜] hh [〜#〜]00から23までの24時間制を使用します。例えば; 1:45:30 AM -> 01および1:45:30 PM -> 13

h1から12までの12時間制を使用します。たとえば、; 1:45:30 AM -> 1および1:45:30 PM -> 1

詳細については、チェックアウトしてくださいカスタムの日付と時刻の形式の文字列

13
Soner Gönül

あなたの問題はあなたの時間指定子にあります。 h1から12までの12時間時計を使用する時間)ではなく、HH24を使用する時間)が必要です。 00から23までの時間時計)。

3
Rawling

文字列値に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);
2
Alex Filipovici

問題は、指定したフォーマット文字列が正しくないことです。

「HH」は2桁の時間を意味しますが、1桁の時間があります。

代わりに「h」を使用してください。

したがって、完全な形式は「dd/MM/yy h:mm:sstt」です。

1
Petar Ivanov

dateTime.Parse()を使用して、日付と時刻を別々に解析します。次に、次のように、2番目の時間コンポーネントを最初のコンポーネントに追加します。

var date = DateTime.Parse (one);
var time = DateTime.Parse (two);
var result = date + time - time.Date;
1

_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(..)引数は必要ありません。

0
Chris S

私は別のフォーマットを持っていて、上記の答えはうまくいきませんでした:

string one = "2019-02-06";
string two = "18:30";

この形式の解決策は次のとおりです。

DateTime newDateTime = Convert.ToDateTime(one).Add(TimeSpan.Parse(two));

結果は次のようになります:newDateTime {06-02-2019 18:30:00}

0
Divya Agrawal

使用する string two = "02:35:10 PM"; の代わりに string two = "2:35:10 PM";と、AM/PM形式のため、hhの代わりにHHもあります。

以下はコードです:

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

DateTime dateTime = DateTime.ParseExact(one + " " + two, "dd/MM/yy hh:mm:ss tt", CultureInfo.InvariantCulture);
0
Ryszard Dżegan

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

        string string1 = "13/2/09";
        string string2 = "2:35:10 PM";
        DateTime combined = DateTime.Parse(string1 + ' ' + string2, new CultureInfo("UK"));
0
Kesty