4

これを使用してDateTime値をDateに変換してから、00:00:00と23:59:59を追加して、ものを数えるときに1日が考慮されるようにします。私はそれが物事を行う間違った方法だとかなり確信しています。正しい方法は何でしょうか?

        DateTime varObliczOd = DateTime.Parse(dateTimeWycenaPortfelaObliczDataOd.Value.ToShortDateString() + " 00:00:00");
        DateTime varObliczDo = DateTime.Parse(dateTimeWycenaPortfelaObliczDataDo.Value.ToShortDateString() + " 23:59:59");
4

8 に答える 8

11

dateTimeWycenaPortfelaObliczDataOdタイプの場合DateTime、次を使用できます。

dateTimeWycenaPortfelaObliczDataOd.Date

日付部分のみを取得します(時刻は00:00:00 ...になります)。日付の最後の目盛りを取得したい場合は、次を使用できます。

dateTimeWycenaPortfelaObliczDataOd.Date.AddDays(1).AddTicks(-1)

しかし、あなたは本当に次の日付(.AddDays(1))で作業する方が良いです。

いずれの場合も、文字列に変換してDateTimeに戻す必要はありません。

于 2010-03-05T14:46:49.907 に答える
5

DateTimeオブジェクトには、必要な場合があるDateプロパティがあります。

于 2010-03-05T14:45:07.460 に答える
2

DateTimeオブジェクトで次のプロパティ/メソッドを使用して、値を取得できます。

DateTime varObliczOd = dateTimeWycenaPortfelaObliczDataOd.Date;
DateTime varObliczDo = dateTimeWycenaPortfelaObliczDataOd.AddDayes(1).AddTicks(-1);
于 2010-03-05T14:48:39.457 に答える
2

なぜそれが必要なのかを知ることは助けになりますが、これはうまくいくでしょう。

DateTime varObliczOd = dateTimeWycenaPortfelaObliczDataOd.Date;
DateTime varObliczDo = varObliczOd.AddDays(1).AddSeconds(-1);

属性を使用し、Dateそれらを直接操作して必要な時間コンポーネントを作成します。解析や変換に煩わされる必要はありません。

于 2010-03-05T14:49:51.863 に答える
1

DateTimeオブジェクトのDateプロパティを使用して、必要なことを実行できます。

DateTime varObliczOd = dateTimeWycenaPortfelaObliczDataOd.Value.Date;
DateTime varObliczDo = dateTimeWycenaPortfelaObliczDataDo.Value.Date.AddDays(1);

本当に23:59:59に終了させたい場合は、次のようにすることができます。

DateTime varObliczDo = dateTimeWycenaPortfelaObliczDataDo.Value.Date.AddDays(1).AddSeconds(-1);

varObliczDoを、時間なしで1日(深夜)の終了日として設定します。それで、もしそうなら、今dateTimeWycenaPortfelaObliczDataDoはそうなるでしょう。2010-03-05 16:12:122010-03-06 00:00:00

于 2010-03-05T14:47:39.717 に答える
0

多分このような何か?私はこれを頭からタイプしました。おそらくコードにいくつかの間違いがあります。

DateTime varObliczOd = dateTimeWycenaPortfelaObliczDataOd.AddSeconds(-dateTimeWycenaPortfelaObliczDataOd.Seconds).AddMinutes(-dateTimeWycenaPortfelaObliczDataOd.Minutes).AddHours(-dateTimeWycenaPortfelaObliczDataOd.Hours);

DateTime varObliczDo  = new DateTime(dateTimeWycenaPortfelaObliczDataDo.Year, dateTimeWycenaPortfelaObliczDataDo.Month, dateTimeWycenaPortfelaObliczDataDoDay, 23, 59, 59);
于 2010-03-05T14:45:42.857 に答える
0

DateTime newDate = new DateTime(oldDate.Year、oldDate.Month、oldDate.Day、23、59,59)DateTime newDate = new DateTime(oldDate.Year、oldDate.Month、oldDate.Day、0、0、0)

于 2010-03-05T14:45:51.413 に答える
0

TimeSpanを使用できます。

DateTime varObliczOd = dateTimeWycenaPortfelaObliczDataOd - new TimeSpan(dateTimeWycenaPortfelaObliczDataOd.Hours, dateTimeWycenaPortfelaObliczDataOd.Minutes, dateTimeWycenaPortfelaObliczDataOd.Seconds);

そのように、少なくとも解析を回避します。これは、地域の文化設定によっては失敗する可能性があります。

于 2010-03-05T14:48:16.960 に答える