0

我想用今天的日期但不同的时间组件创建一个新的 DateTime 对象。这是我目前的做法

DateTime oddStart = new DateTime(DateTime.Now.Year, DateTime.Now.Month,  DateTime.Now.Day,
                                            0,0,0);

有没有更好看的方法呢?

4

3 回答 3

2

你可以简单地写

var date = DateTime.Today.Add(new TimeSpan(hours, minutes, seconds));

如果您只想将小时、分钟和秒设置为零,那么您甚至不需要.Add().

于 2013-09-18T09:17:31.263 回答
1
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
于 2013-09-18T09:16:21.267 回答
0

这就是构造函数的用途,但我会将其捕获DateTime.Now为单独的参数:

var now = DateTime.Now;
var myDate = new DateTime(now.Year, now.Month, now.Day, 0, 0, 0);

否则,值可能会在提供参数之间发生变化。

如果您想要的只是一个时间为零的日期,.Date那么DateTime.

有多种替代方法可以做到这一点,但我不会说任何一种都比其他方法更好。任何最易读的东西都是最初瞄准的好东西。

于 2013-09-18T09:16:15.543 回答