繁体   English   中英

如何仅在C#DateTime对象中更改日期

[英]How do I change the date only in a C# DateTime object

我正在寻找一种优雅的解决方案(如果存在)以实现标题中所述的内容。

我看到了一种“在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属性:

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

尝试这个:

DateTime s = ...;
s = new DateTime(year, month, day) + s.TimeOfDay;

这样可以将时间保留在原始的DateTime中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM