Je travaille sur un programme qui nécessite le retour de la date d'un événement.
Je suis à la recherche d'un Date
et non un DateTime
.
Existe-t-il un type de données qui renvoie uniquement la date ?
Je travaille sur un programme qui nécessite le retour de la date d'un événement.
Je suis à la recherche d'un Date
et non un DateTime
.
Existe-t-il un type de données qui renvoie uniquement la date ?
Non, il n'y en a pas. DateTime
représente un moment dans le temps qui est composé d'une date et d'une heure. Cependant, vous pouvez récupérer la partie date via la fonction Date
(qui est une autre DateTime
avec l'heure réglée sur 00:00:00
).
Et vous pouvez récupérer les propriétés des dates individuelles via Day
, Month
y Year
.
UPDATE : Dans .NET 6, les types DateOnly
y TimeOnly
sont introduits qui représentent juste une date ou juste une heure.
J'ai créé un simple Structure de la date pour les moments où vous avez besoin d'une simple date sans vous soucier de la portion d'heure, des fuseaux horaires, de l'heure locale et de l'heure exacte, etc.
Date today = Date.Today;
Date yesterday = Date.Today.AddDays(-1);
Date independenceDay = Date.Parse("2013-07-04");
independenceDay.ToLongString(); // "Thursday, July 4, 2013"
independenceDay.ToShortString(); // "7/4/2013"
independenceDay.ToString(); // "7/4/2013"
independenceDay.ToString("s"); // "2013-07-04"
int july = independenceDay.Month; // 7
Malheureusement, pas dans la BCL .Net. Les dates sont généralement représentées par un objet DateTime dont l'heure est fixée à minuit.
Comme vous pouvez le deviner, cela signifie que vous avez tous les problèmes de fuseau horaire qui en découlent, même si pour un objet Date, vous ne voulez absolument pas gérer le fuseau horaire.
Créez une classe enveloppante. Quelque chose comme ça :
public class Date:IEquatable<Date>,IEquatable<DateTime>
{
public Date(DateTime date)
{
value = date.Date;
}
public bool Equals(Date other)
{
return other != null && value.Equals(other.value);
}
public bool Equals(DateTime other)
{
return value.Equals(other);
}
public override string ToString()
{
return value.ToString();
}
public static implicit operator DateTime(Date date)
{
return date.value;
}
public static explicit operator Date(DateTime dateTime)
{
return new Date(dateTime);
}
private DateTime value;
}
Et exposer tout ce qui est value
que vous voulez.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.