Comment régler l’heure à minuit pour la journée en cours?

Chaque fois que je crée une date / heure non nullable dans mon application mvc3, sa valeur par défaut est now (), où se trouve la date actuelle avec l’heure actuelle. Je voudrais par défaut à la date d’aujourd’hui à 12h comme heure.

J’essaie de régler l’heure par défaut dans mon mvc … mais … la date suivante n’est pas fixée à 12h. Au lieu de cela, la valeur par défaut est maintenant avec 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 puis-je définir à 12h pour la date actuelle pour datetime non nullable?

Vous pouvez utiliser la propriété Date de l’object 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 Si vous retournez à votre code d’origine en définissant les heures à 12 , vous obtiendrez l’heure de midi pour la journée en cours, vous auriez donc pu utiliser 0

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

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

An object that is set to today's date, with the time component set to 00:00:00.

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

Votre code serait

 DateTime _Begin = DateTime.Today; 

Seulement besoin de le régler sur

DateTime.Now.Date

  Console.WriteLine(DateTime.Now.Date.ToSsortingng("yyyy-MM-dd HH:mm:ss")); Console.Read(); It shows "2017-04-08 00:00:00" on my machine. 

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

Définir la date avec le composant heure défini sur 00:00:00

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

Usage

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

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 calendaires entre deux dates, quelle que soit l’heure associée à chaque date, j’ai constaté que cela fonctionne bien:

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

Essayez-le ……

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

OutPut sera ….

29/07/2015 00:00:00