web-dev-qa-db-ja.com

C#でDateTime変数の時刻部分のみを設定する方法

DateTime変数があります:

DateTime date = DateTime.Now;

DateTime変数の時刻部分を変更したい。しかし、時間部分(hh:mm:ss)にアクセスしようとしたとき、これらのフィールドは読み取り専用です。

これらのプロパティを設定できませんか?

75
Vaibhav Jain

年、月、日、時間、分、秒を指定できるコンストラクターを使用します。

var dateNow = DateTime.Now;
var date = new DateTime(dateNow.Year, dateNow.Month, dateNow.Day, 4, 5, 6);
126
Ahmad Mageed

dateTimeオブジェクトを変更することはできません。不変です。ただし、たとえば次のように新しい値に設定できます。

var newDate = oldDate.Date + new TimeSpan(11, 30, 55);
22
Daniel Perez
date = new DateTime(date.year, date.month, date.day, HH, MM, SS);
15
Rhapsody

私はあなたが何をしようとしているのか正確にはわかりませんが、あなたはいくつかの方法であなたが望むものに正確に日付/時刻を設定することができます...

12/25/2010 4:58 PMを指定するには、次を使用します

DateTime myDate = Convert.ToDateTime("2010-12-25 16:58:00");

または、12/25/2010(および任意のランダムな時間)などの既存のdatetimeコンストラクトがあり、それを12/25/2010 4:58 PMに設定する場合、次のようにできます。

DateTime myDate = ExistingTime.Date.AddHours(16).AddMinutes(58);

ExistingTime.Dateは真夜中の12/25になり、時間と分を追加するだけで目的の時間になります。

13
David

DateTimeは不変であるため、不可能です。同じ議論がここにあります: datetimeで時間を変更するには?

3
cspolton