如何仅在c# DateTime对象中更改日期?
本文关键字:日期 对象 何仅 DateTime | 更新日期: 2023-09-27 18:11:56
我正在寻找一个优雅的解决方案(如果存在的话)来实现我在标题中描述的内容。
我看到了一个"在DateTime对象中更改时间"的优雅解决方案,如下所示:
DateTime s = ...;
TimeSpan ts = new TimeSpan(10, 30, 0);
s = s.Date + ts;
如果有这样的解决方案来改变日期在DateTime对象?
DateTime
结构体被设计为不可变的,所以你不能改变它。您可以根据旧的值获得一个新的,这正是您的解决方案所做的。
您可以使用DateTime
构造函数使其更清楚,它接受所有日期和时间值:年,月,日,小时,分钟和秒。
s = new DateTime(s.Year, s.Month, s.Day, 10, 30, 0);
s = new DateTime(2014, 10, 2, s.Hour, s.Minute, s.Second);
或者可以使用TimeOfDay
property:
s = new DateTime(2014, 10, 2) + s.TimeOfDay;
假设您要传递一个新的DateTime对象来更新您现有的对象,这样的函数可以工作。
DateTime UpdateDate(DateTime existingDate, DateTime newDate)
{
return newDate.Date + existingDate.TimeOfDay;
}
myDatetime = new DateTime(year, month, day);
您可以使用DateTime构造函数,这样您就可以保留原始时间。
请看下面的例子:
var firstDate = new DateTime(2015, 01, 01, 15, 0, 0);
var newDate = DateTime.Now;
// New date, original time.
firstDate = new DateTime(newDate.Year, newDate.Month, newDate.Day, firstDate.Hour, firstDate.Minute, firstDate.Second, firstDate.Millisecond);
试试这个:
DateTime s = ...;
s = new DateTime(year, month, day) + s.TimeOfDay;
保留原始DateTime中的时间
试试这个:
DateTime now = DateTime.Now;
DateTime dateOnly = now.Date;
TimeSpan time = now.TimeOfDay;
dateOnly = DateTime.Parse("5/15/15"); // or whatever date you choose
DateTime newDateTime = dateOnly + time;