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?
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);
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;
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));
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.
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;