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

时间:2012-11-20 05:42:16

标签: c# .net

每当我在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; } } 

如何为非可空日期时间的当前日期设置为12am?

7 个答案:

答案 0 :(得分:90)

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

DateTime midnight = DateTime.Now.Date;

所以你的代码示例变为

private DateTime _Begin = DateTime.Now.Date;
public DateTime Begin { get { return _Begin; } set { _Begin = value; } }

PS。回到原始代码,将小时数设置为 12 将为您提供当天中午的时间,因此您可以使用 0 ...

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

答案 1 :(得分:25)

我相信你正在寻找DateTime.Today。文档说明:

  

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

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

您的代码将是

DateTime _Begin = DateTime.Today;

答案 2 :(得分:1)

使用上述某些建议,以下功能和代码可用于搜索日期范围:

设置日期时间组件设置为00:00:00

public static DateTime GetDateZeroTime(DateTime date)
{
    return new DateTime(date.Year, date.Month, date.Day, 0, 0, 0);
}

<强>用法

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

var modifieddateend = Tools.Utilities.GetDateZeroTime(form.modifieddateend.AddDays(1));

答案 3 :(得分:1)

只需要将其设置为

DateTime.Now.Date

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

显示

  

&#34; 2017-04-08 00:00:00&#34;

在我的机器上。

答案 4 :(得分:0)

根据与每个日期相关的时间,大多数建议的解决方案可能会导致1天的错误。如果您要查找日期之间的整数日历天数,无论与每个日期相关的时间如何,我都发现这很有效:

return (dateOne.Value.Date - dateTwo.Value.Date).Days;

答案 5 :(得分:0)

相关,所以我想我会为其他人发帖。如果要查找今天开始的UTC(对于您的时区),则以下代码适用于任何UTC偏移量(-23.5至+23.5)。看起来我们先添加X小时,然后减去X小时,但重要的是添加后的“ .Date”。

double utcOffset= 10.0;  // Set to your UTC offset in hours (eg. Melbourne Australia)
var now = DateTime.UtcNow;

var startOfToday = now.AddHours(utcOffset - 24.0).Date;
startOfToday = startOfToday.AddHours(24.0 - utcOffset);

答案 6 :(得分:-1)

试试这个:

DateTime Date = DateTime.Now.AddHours(-DateTime.Now.Hour).AddMinutes(-DateTime.Now.Minute)
   .AddSeconds(-DateTime.Now.Second);

输出将如下:

  

07/29/2015 00:00:00