146 votes

Date vs DateTime

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 ?

171voto

Ronald Wildenberg Points 18258

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.

26voto

Clay Points 1060

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

https://github.com/claycephus/csharp-date

16voto

Jonathan Rupp Points 10900

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.

9voto

Øyvind Skaar Points 1364

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.

5voto

Stevo3000 Points 12725

Le type Date est juste un alias du type DateTime utilisé par VB.NET (comme int devient Integer). Ces deux types possèdent une propriété Date qui vous renvoie l'objet dont la partie temps est réglée sur 00:00:00.

Prograide.com

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.

Powered by:

X