Дата против DateTime

Я работаю над программой, для которой требуется вернуть дату события. Я ищу "Дата", а не "DateTime". Должен быть тип данных, который возвращает только дату... есть?

Ответ 1

Нет, нет. DateTime представляет собой некоторый момент времени, состоящий из даты и времени. Однако вы можете получить часть даты через свойство Date (это еще один DateTime с временем, установленным на 00:00:00).

И вы можете получить отдельные свойства даты через Day, Month и Year.

Ответ 2

Я создал простую Структуру даты, когда вам нужна простая дата, не беспокоясь о временной части, часовых поясах, локальных или utc и т.д..

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

Ответ 3

К сожалению, не в .Net BCL. Даты обычно представляются как объект DateTime с временем, установленным до полуночи.

Как вы можете догадаться, это означает, что у вас есть все связанные с ним проблемы с часовым поясом, даже если для объекта Date вы абсолютно не хотите обрабатывать часовой пояс.

Ответ 4

Создайте класс-оболочку. Что-то вроде этого:

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;
    }

И выведите все, что хотите value.

Ответ 5

Тип Date - это просто псевдоним типа DateTime, используемого VB.NET(например, int становится Integer). Оба этих типа имеют свойство Date, которое возвращает вам объект с временной частью, установленной в 00:00:00.

Ответ 6

DateTime имеет свойство Date, которое можно использовать для выделения части даты. Метод ToString также неплохо работает только с отображением части Date, когда часть времени пуста.

Ответ 7

Вы можете вернуть DateTime, где время составляет 00:00:00, и просто игнорировать его. Даты обрабатываются как целые числа времени, поэтому имеет смысл комбинировать дату со временем, которое все равно присутствует в целых числах.

Ответ 8

Для этого вам нужно использовать дату, но игнорировать значение времени.

Обычно дата была бы DateTime со временем 00:00:00

Тип DateTime имеет свойство .Date, которое возвращает DateTime со значением времени, указанным выше.

Ответ 9

Объект DateTime имеет свойство, которое возвращает только часть даты значения.

    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);
}

Ответ 10

Нет Date DataType.

Однако вы можете использовать DateTime.Date для получения только даты.

например.

DateTime date = DateTime.Now.Date;

Ответ 11

public class AsOfdates
{
    public string DisplayDate { get; set; }
    private DateTime TheDate;
    public DateTime DateValue 
    {
        get 
        { 
            return TheDate.Date; 
        } 

        set 
        { 
            TheDate = value; 
        } 
    }    
}

Ответ 12

Вы можете попробовать одно из следующих действий:

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

Но в BCL нет типа "Дата".