每当我在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?
答案 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