我想用今天的日期但不同的时间组件创建一个新的 DateTime 对象。这是我目前的做法
DateTime oddStart = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day,
0,0,0);
有没有更好看的方法呢?
你可以简单地写
var date = DateTime.Today.Add(new TimeSpan(hours, minutes, seconds));
如果您只想将小时、分钟和秒设置为零,那么您甚至不需要.Add()
.
var dateTime = DateTime.Now.Date;
或者
var dateTime = DateTime.Today;
它们都返回今天的日期,并将时间分量全部设置为零。
如果您想要一个非零的自定义时间组件,您可以执行以下操作:
var dateTime = DateTime.Today.Add(new TimeSpan(1, 2, 3)); // 18/09/2013 01:02:03
这就是构造函数的用途,但我会将其捕获DateTime.Now
为单独的参数:
var now = DateTime.Now;
var myDate = new DateTime(now.Year, now.Month, now.Day, 0, 0, 0);
否则,值可能会在提供参数之间发生变化。
如果您想要的只是一个时间为零的日期,.Date
那么DateTime
.
有多种替代方法可以做到这一点,但我不会说任何一种都比其他方法更好。任何最易读的东西都是最初瞄准的好东西。