0

私の c# プログラムでは、ユーザーは winforms の日時ピッカーから日付を選択できます。これは と名付けられましdtpOutboxた。

これが私のコードです:

DateTime selectedDate = dtpOutbox.Value.Date;
TimeSpan ts = new TimeSpan(23,59,59);
DateTime endOfSelectedDay = selectedDate + ts;

Console.WriteLine(selectedDate.ToString("yyyy-MM-dd hh:mm:ss"));
Console.WriteLine(endOfSelectedDay.ToString("yyyy-MM-dd hh:mm:ss"));

今日の日付が2月22日である場合、これが出力されるはずであることが私の理解です(望ましい出力):

2013-02-22 00:00:00
2013-02-22 23:59:59

しかし、そうではありません。私の出力は次のとおりです。

2013-02-22 12:00:00
2013-02-22 11:59:59

フォーマット文字列 (selectedDate.ToString()) なしで DateTime 値を表示すると、22/02/2013 00:00:00 が正しく表示されるため、これはフォーマットの問題であると確信しています。ただし、日付は 22-02-2013 00:00:00 の形式である必要があります。

私の最初の日付が正午になり、2 番目の日付が 11:59:59 になると C# が判断する理由はありますか?

4

2 に答える 2

8

hh12時間時計出力です。

HH24時間時計出力です。

小文字のバリアントを使用していますが、AM/PM 値を出力していません。これが混乱の原因かもしれません。

于 2013-02-22T14:54:37.970 に答える
5

これはあなたが探しているものです:

Console.WriteLine(selectedDate.ToString("yyyy-MM-dd HH:mm:ss"));

24 時間形式の場合は、HH代わりに を使用しhhます。

Custom Date and Time Formats のドキュメントを参照してください。

于 2013-02-22T14:54:39.063 に答える