web-dev-qa-db-fra.com

Date vs DateTime

Je travaille sur un programme qui nécessite la date d'un événement pour être renvoyé.

Je cherche un Date, pas un DateTime.

Existe-t-il un type de données qui renvoie uniquement la date?

98
MrM

Non il n'y en a pas. DateTime représente un moment donné composé d'une date et d'une heure. Cependant, vous pouvez récupérer la partie de date via la propriété Date (qui est un autre DateTime avec le temps défini sur 00:00:00).

Et vous pouvez récupérer des propriétés de date individuelles via Day , Month et Year .

117
Ronald Wildenberg

J'ai créé un simple Date struct pour les moments où vous avez besoin d'une date simple sans vous soucier de l'heure, du fuseau horaire, du lieu local par rapport au lieu choisi, 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

21
Clay

Malheureusement, pas dans le .Net BCL. Les dates sont généralement représentées sous la forme d'un objet DateTime avec l'heure définie sur minuit.

Comme vous pouvez le deviner, cela signifie que vous avez tous les problèmes de fuseau horaire associés, même si, pour un objet Date, vous ne souhaitez absolument pas gérer le fuseau horaire.

13
Jonathan Rupp

Créez une classe wrapper. 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 exposez ce que vous voulez de value.

9
Øyvind Skaar

Le type Date est simplement un alias du type DateTime utilisé par VB.NET (comme int devient Integer). Ces deux types ont une propriété Date qui vous renvoie l'objet avec la partie heure définie sur 00:00:00.

4
stevehipwell

DateTime a une propriété Date que vous pouvez utiliser pour isoler la partie de date. La méthode ToString permet également d’afficher uniquement la partie Date lorsque la partie heure est vide.

3
C. Ross

Il n'y a pas de Date DataType.

Cependant, vous pouvez utiliser DateTime.Date pour obtenir uniquement la date.

E.G.

DateTime date = DateTime.Now.Date;
2
Nick N.

L'objet DateTime a une propriété qui renvoie uniquement la partie date de la valeur.

    public static void Main()
{
    System.DateTime _Now = DateAndTime.Now;
    Console.WriteLine("The Date and Time is " + _Now);
    //will return the date and time
    Console.WriteLine("The Date Only is " + _Now.Date);
    //will return only the date
    Console.Write("Press any key to continue . . . ");
    Console.ReadKey(true);
}
2
hmcclungiii
public class AsOfdates
{
    public string DisplayDate { get; set; }
    private DateTime TheDate;
    public DateTime DateValue 
    {
        get 
        { 
            return TheDate.Date; 
        } 

        set 
        { 
            TheDate = value; 
        } 
    }    
}
1
William Mendoza

Vous pouvez retourner DateTime où l'heure est 00:00:00 et simplement l'ignorer. Les dates sont traitées comme des entiers d'horodatage. Il est donc logique de combiner la date avec l'heure, car celle-ci est présente dans l'entier.

1
Mikko Rantanen

Pour cela, vous devez utiliser la date, mais ignorer la valeur de l'heure.

Habituellement, une date serait une DateTime avec une heure de 00:00:00

Le type DateTime a un .Date propriété qui retourne le DateTime avec la valeur de temps définie comme ci-dessus.

1
Sam Meldrum

Vous pouvez essayer l'une des solutions suivantes:

DateTime.Now.ToLongDateString();
DateTime.Now.ToShortDateString();

Mais il n'y a pas de type "Date" dans la BCL.

0
Andrew Hare