Как удалить временную часть даты в C # только в объекте DateTime? - PullRequest
393 голосов
/ 25 мая 2011

Мне нужно удалить часть времени даты времени или, возможно, иметь дату в следующем формате в форме object, а не в форме string.

06/26/2009 00:00:00:000

Я не могу использовать любые string методы преобразования, так как мне нужна дата в object форме.

Я сначала попытался преобразовать DateTime в string, удалить из него дату, относящуюся ко времени, но она добавляет 12:00:00 AM, как толькокогда я конвертирую его обратно в DateTime object обратно.

Ответы [ 37 ]

729 голосов
/ 25 мая 2011

Используйте свойство Дата :

var dateAndTime = DateTime.Now;
var date = dateAndTime.Date;

Переменная date будет содержать дату, часть времени будет 00:00:00.

139 голосов
/ 25 мая 2011

Вы можете использовать строки формата, чтобы придать выходной строке нужный вам формат.

DateTime dateAndTime = DateTime.Now;
Console.WriteLine(dateAndTime.ToString("dd/MM/yyyy")); // Will give you smth like 25/05/2011

Подробнее здесь .

99 голосов
/ 31 октября 2012

Используйте метод ToShortDateString. Смотри документацию http://msdn.microsoft.com/en-us/library/system.datetime.toshortdatestring.aspx

var dateTimeNow = DateTime.Now; // Return 00/00/0000 00:00:00
var dateOnlyString = dateTimeNow.ToShortDateString(); //Return 00/00/0000
36 голосов
/ 25 мая 2011

Просмотрите свойство DateTime.Date .

Получает компонент даты этого экземпляра.

28 голосов
/ 25 мая 2011

Свойство Date возвращает дату в полночь.

Один из вариантов может состоять в том, чтобы получить отдельные значения (день / месяц / год) отдельно и сохранить их в нужном вам типе.

var dateAndTime = DateTime.Now; 
int year = dateAndTime.Year;
int month = dateAndTime.Month;
int day = dateAndTime.Day;

string.Format("{0}/{1}/{2}", month, day, year);
19 голосов
/ 29 января 2016

Ни один из приведенных выше ответов не решил мою проблему с winforms.

Самый простой способ достичь ONLY date - это простая функция в Datetime:

DateTime dt = DateTime.now;
String BirthDate = dt.ToShortDateString();

Youбудет иметь дату только в строке именинника.

14 голосов
/ 21 сентября 2012

Вы не можете.У DateTime в .NET всегда есть время, по умолчанию 00: 00: 00: 000.Свойство Date DateTime также является DateTime (!), Поэтому время по умолчанию также равно 00: 00: 00: 000.

Это недостаток в .NET Framework, и это может бытьутверждал, что DateTime в .NET нарушает принцип единой ответственности .

14 голосов
/ 25 мая 2011

Попробуйте создать для этого собственную структуру.Объект DateTime будет иметь дату и время как

11 голосов
/ 25 мая 2011
10 голосов
/ 04 сентября 2016

Вот другой метод с использованием String.Format

    DateTime todaysDate = DateTime.UtcNow;

    string dateString = String.Format("{0:dd/MM/yyyy}", todaysDate);

    Console.WriteLine("Date with Time: "+ todaysDate.ToString());

    Console.WriteLine("Date Only : " + dateString);

Вывод:

Date with Time: 9/4/2016 11:42:16 AM

Date Only : 04/09/2016

Это также работает, если дата и времяхранится в базе данных.

Для более подробного форматирования даты и времени проверьте следующие ссылки:

Ссылка 1

Ссылка 2

Надежда помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...