如何只保留DateTime的日期部分,同时保留时间部分?
我在代码中使用了很多DateTime。 我想将这些DateTimes更改为我的特定日期并保留时间。
1. "2012/02/02 06:00:00" => "2015/12/12 : 06:00:00" 2. "2013/02/02 12:00:00" => "2015/12/12 : 12:00:00"
我使用这种风格来改变,但它似乎不是好方法,我想问任何方法来实现这个任务。
DateTime newDateTime = new DateTime(2015,12,12,oldDateTime.Hour,oldDateTime.Minute,0);
根据您提供的信息,我认为这种方法很好。 如果你想避免经常重写oldDateTime.Hour,oldDateTime.Minute,0
件,你可以创建自己的静态类来简化方法调用。
在您的常规申请中:
class Program { static void Main(string[] args) { DateTime time = DateTime.Now; DateTime newDateTime = MyDateTimeUtil.CreateDateFromTime(2015, 12, 12, time); } }
创建DateTime
值的静态类:
public static class MyDateTimeUtil { public static DateTime CreateDateFromTime(int year, int month, int day, DateTime time) { return new DateTime(year, month, day, time.Hour, time.Minute, 0); } }
保留秒,毫秒和较小部分时间的更好方法是:
DateTime newDateTime = new DateTime(2015,12,12) + oldDateTime.TimeOfDay;
或者您可以使用扩展方法将新Date应用于现有DateTime,同时不信任新日期没有TimeOfDay: –
public static DateTime WithDate (this DateTime datetime, DateTime newDate) { return newDate.Date + datetime.TimeOfDay; }
IMHO DateTime
是.NET中最薄弱的部分之一。 例如, TimeSpan
与TimeOfDay
也不能代表’TimePeriod’(以月计) – 这是三个独立的概念,将它们混合起来是一个糟糕的选择。 一般来说,移动到DateTimeOffset
或者是优秀的Noda时间库。