如何设置当天的午夜时间?

gen*_*eek 60 .net c#

每次我在我的mvc3应用程序中创建一个不可为空的日期时间时,它默认为now(),现在是当前时间的当前日期.我希望将它默认为今天上午12点的时间.

我试图在我的mvc中默认时间......但是......以下内容未设置为今天的日期@ 12am.相反,它默认为现在的日期和时间.

private DateTime _Begin = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 12, 0, 0);
public DateTime Begin { get { return _Begin; } set { _Begin = value; } } 
Run Code Online (Sandbox Code Playgroud)

对于不可为空的日期时间,如何将当前日期设置为12am?

Chr*_*ray 101

您可以使用DateDateTime对象的属性 - 例如

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

所以你的代码示例变成了

private DateTime _Begin = DateTime.Now.Date;
public DateTime Begin { get { return _Begin; } set { _Begin = value; } }
Run Code Online (Sandbox Code Playgroud)

PS.回到你的原始代码设置小时到12将给你当天中午的时间,所以你可以使用0 ...

var now = DateTime.Now;
new DateTime(now.Year, now.Month, now.Day, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)

  • 还有`DateTime.Today` (17认同)
  • 关于最后一行:**永远不要在同一个表达式中使用多次调用`Now`属性getter."现在"改变了!如果代码在"Day"(可能还有"Month"和"Year")更改的时间附近运行,则会产生错误的输出.就像'Now`-s中的第一个可能是"11月30日23:59:59.9999 ......",最后一个可能是"12月1日,00:00:00.0000 ......".你的结果可能是**11月1日**,离开了. (14认同)
  • @Erv确实,如果你反映(反汇编M $ dll),你会发现`Today`只是`DateTime.Now.Date`的包装器 - 所以我个人觉得这只是在我的代码中表现出更多的意图...... (2认同)
  • 这让我很生气地认为`Now.Date`对于额外的3个字符来说是*过分*冗长... (2认同)

Jus*_*ony 31

我相信你在找DateTime.Today.文件说明:

设置为今天日期的对象,时间组件设置为00:00:00.

http://msdn.microsoft.com/en-us/library/system.datetime.today.aspx

你的代码就是

DateTime _Begin = DateTime.Today;
Run Code Online (Sandbox Code Playgroud)

  • @vNext 是的,它准确地回答了问题,并且是最简洁的答案。 (2认同)

Rav*_*Ram 9

使用上述一些建议,以下函数和代码可用于搜索日期范围:

设置日期,时间部分设置为 00:00:00

public static DateTime GetDateZeroTime(DateTime date)
{
    return new DateTime(date.Year, date.Month, date.Day, 0, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)

用法

var modifieddatebegin = Tools.Utilities.GetDateZeroTime(form.modifieddatebegin);

var modifieddateend = Tools.Utilities.GetDateZeroTime(form.modifieddateend.AddDays(1));
Run Code Online (Sandbox Code Playgroud)


小智 6

只需要设置为

DateTime.Now.Date

Console.WriteLine(DateTime.Now.Date.ToString("yyyy-MM-dd HH:mm:ss"));
Console.Read();
Run Code Online (Sandbox Code Playgroud)

表明

“2017-04-08 00:00:00”

在我的机器上。