web-dev-qa-db-fra.com

Comment régler l'heure à minuit pour le jour actuel?

Chaque fois que je crée une date/heure non Nullable dans mon application mvc3, la valeur par défaut est now (), où now correspond à la date actuelle et à l'heure actuelle. Je voudrais le mettre à la date d'aujourd'hui avec 12h comme heure.

J'essaie de régler l'heure par défaut dans mon MVC ... mais ... ce qui suit n'est pas réglé sur la date du jour à 12h00. Au lieu de cela, il utilise par défaut la date et l'heure actuelles.

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

Comment définir 12 heures pour la date du jour pour une date/heure non Nullable?

52
JaJ

Vous pouvez utiliser la propriété Date de l'objet DateTime - par exemple

DateTime midnight = DateTime.Now.Date;

Ainsi, votre exemple de code devient

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

PS. revenir à votre code d'origine en réglant les heures sur 12 vous donnera l'heure de midi pour le jour en cours. Vous auriez donc pu utiliser 0 ...

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

Je crois que vous recherchez DateTime.Today. La documentation indique:

Un objet défini à la date du jour, avec le composant heure défini sur 00:00:00.

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

Votre code serait 

DateTime _Begin = DateTime.Today;
22
Justin Pihony

En utilisant certaines des recommandations ci-dessus, la fonction et le code suivants fonctionnent pour rechercher une plage de dates:

Réglez la date avec le composant heure sur 00:00:00

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

Utilisation

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

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

Seulement besoin de le configurer pour 

DateTime.Now.Date

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

Ça montre 

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

sur ma machine.

1
Reno

La plupart des solutions suggérées peuvent entraîner une erreur d'un jour en fonction du temps associé à chaque date. Si vous recherchez un nombre entier de jours civils entre les dates, quelle que soit l'heure associée à chaque date, j'ai constaté que cela fonctionnait bien:

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