78

每次我在我的 mvc3 应用程序中创建一个不可为空的日期时间时,它默认为 now(),其中 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; } } 

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

4

7 回答 7

140

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

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);
于 2012-11-20T05:44:14.740 回答
40

相信你正在寻找DateTime.Today。该文档指出:

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

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

你的代码是

DateTime _Begin = DateTime.Today;
于 2012-11-20T05:45:37.327 回答
5

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

将时间组件设置为 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));
于 2016-10-10T16:12:30.323 回答
5

只需将其设置为

DateTime.Now.Date

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

表明

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

在我的机器上。

于 2017-04-09T01:06:00.830 回答
1

相关,所以我想我会为其他人发帖。如果您想找到今天开始的 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);
于 2019-09-22T02:46:55.030 回答
0

大多数建议的解决方案可能会导致 1 天错误,具体取决于与每个日期关联的时间。如果您正在寻找日期之间的整数个日历日,无论与每个日期关联的时间如何,我发现这很有效:

return (dateOne.Value.Date - dateTwo.Value.Date).Days;
于 2018-01-05T03:02:12.417 回答
-1

试试这个:

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

输出将如下所示:

2015 年 7 月 29 日 00:00:00

于 2015-07-29T06:38:04.980 回答