在C#中创建Midnight DateTime的最佳方法

end*_*ian 70 c# datetime

我需要创建一个午夜DateTime

我刚刚这样做了:

DateTime endTime = DateTime.Now;
endTime.Subtract(endTime.TimeOfDay);
Run Code Online (Sandbox Code Playgroud)

还没有测试它,我假设它有效,但是有更好/更清洁的方式吗?

Mar*_*ell 158

只是使用foo.Date,或DateTime.Today今天的日期

  • 值得考虑的是,人们通常认为午夜是一天的最后一秒,而这给出了一天的第一秒(这是一个不同的午夜)。因此,如果您打算实现午夜的流行含义,请参阅下面 Aruna 的回答(以及 Paul Suart 的评论) (3认同)

mmi*_*ika 15

DateTime.Today


Web*_*ude 13

DateTime.Now.AddDays(1).Date

  • 我认为`DateTime.Today.AddDays(1)`比这更好. (11认同)

zen*_*dar 13

DateTime endTime = DateTime.Now.Date;
Run Code Online (Sandbox Code Playgroud)

现在endTime.TimeOfDay.ToString()回来了"00:00:00"


Aru*_*una 6

您可以使用DateTime.Today午夜的精确秒数.

    DateTime today = DateTime.Today;
    DateTime mid = today.AddDays(1).AddSeconds(-1);
    Console.WriteLine(string.Format("Today: {0} , Mid Night: {1}", today.ToString(), mid.ToString()));

    Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

这应该打印:

Today: 11/24/2016 10:00:00 AM , Mid Night: 11/24/2016 11:59:59 PM
Run Code Online (Sandbox Code Playgroud)

  • 午夜是第一个 - 这是当天的第一个秒,而不是最后一个. (2认同)