web-dev-qa-db-de.com

Wie stelle ich den aktuellen Tag um Mitternacht ein?

Jedes Mal, wenn ich eine nicht-nullable-datetime in meiner mvc3-Anwendung erstelle, wird standardmäßig now () verwendet, wobei jetzt das aktuelle Datum mit der aktuellen Uhrzeit angezeigt wird. Ich möchte es auf das heutige Datum mit 12 Uhr als Uhrzeit setzen.

Ich versuche, die Zeit in meinem MVC als Standard festzulegen ... aber das Folgende ist nicht auf das heutige Datum um 12 Uhr eingestellt. Stattdessen wird jetzt standardmäßig mit aktuellem Datum und Uhrzeit angezeigt.

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; } } 

Wie kann ich für das aktuelle Datum für nicht nullfähige Datumsangaben auf 12 Uhr eingestellt werden?

52
JaJ

Sie können die Date-Eigenschaft des DateTime-Objekts verwenden, z

DateTime midnight = DateTime.Now.Date;

So wird dein Codebeispiel

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

PS. Wenn Sie zu Ihrem ursprünglichen Code zurückkehren, indem Sie die Stunden auf 12 setzen, erhalten Sie eine Uhrzeit von mittags für den aktuellen Tag. Stattdessen könnten Sie 0 verwenden.

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

Ich glaube, Sie suchen DateTime.Today. In der Dokumentation heißt es:

Ein Objekt, das auf das heutige Datum eingestellt ist, wobei die Zeitkomponente auf 00:00:00 gesetzt ist.

http://msdn.Microsoft.com/de-de/library/system.datetime.today.aspx

Ihr Code wäre 

DateTime _Begin = DateTime.Today;
22
Justin Pihony

Bei der Verwendung einiger der oben genannten Empfehlungen funktioniert die folgende Funktion und der folgende Code für die Suche nach einem Datumsbereich:

Datum mit der Zeitkomponente auf 00:00:00 setzen

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

Verwendungszweck

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

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

Müssen Sie es nur einstellen 

DateTime.Now.Date

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

Es zeigt 

"2017-04-08 00:00:00" 

auf meinem Rechner.

1
Reno

Die meisten der vorgeschlagenen Lösungen können je nach der mit jedem Datum verbundenen Zeit einen Fehler von 1 Tag verursachen. Wenn Sie nach einer ganzzahligen Anzahl von Kalendertagen zwischen den Datumsangaben suchen, unabhängig von der mit jedem Datum verbundenen Zeit, habe ich festgestellt, dass dies gut funktioniert:

return (dateOne.Value.Date - dateTwo.Value.Date).Days;
0
Rusty West