2010-10-01 3 views
3

Как я могу «обрезать» значение свойства DateTime в C#?C# DateTime, Trim без преобразования в строку

Например, когда я получаю дату, она имеет формат «10/1/2010 00:00:00».

Как я могу «обрезать» «Время» 00:00:00, не преобразовывая это в строку?

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

Любая помощь приветствуется.

+5

Ваш вопрос не имеет смысла. У вашей даты всегда будет время, хотя может быть 00:00:00. – Aliostad

+1

Имя класса - дата + время. DateTime. Нет «нулевого времени» –

+0

Возможно, вы недостаточно подробно объясняете проблему. Как говорили другие, класс DateTime по определению ВСЕГДА имеет часть времени. Если ваша программа зависит от того, что не было времени, возможно, что-то не так с дизайном. Или вы просто не понимаете ... –

ответ

8
var dt = DateTime.Now; // 10/1/2010 10:44:24 AM 
var dateOnly = dt.Date; // 10/1/2010 12:00:00 AM 
+1

И/или dt.ToShortDateString(); когда наступает время для отображения. –

+1

Это не отвечает на вопрос. Конечно, вопрос не имеет ответа, так как DateTime всегда имеет время. –

+0

@ Кевин Гейл: Я не согласен. Я думаю, что это доходит до цели ОП. Возможно, он разъяснит вопрос или комментарий на эту должность. – codekaizen

2

Если вы спрашиваете, может ли объект DateTime быть неизвестным по времени, ответ отрицательный. Вы можете создать класс, определяемый пользователем Date, который просто возвращает часть Date объекта DateTime. Если вы только посмотрите на , обрезайте время, см. Ниже.

DateTime now = DateTime.Now; 
DateTime today = now.Date; 

или

DateTime now = DateTime.Now; 
DateTime today = new DateTime(now.Year, now.Month, now.Day); 
0

Разве вы не можете просто взять его из объекта DateTime и затем .ToString() это?

DateTime current = DateTime.Now; 
string myTime = current.TimeOfDay.Tostring() 

Вы можете лишить миллисекунды с конца ...

0

Это не может быть сделано. DateTime всегда имеет время, даже если время 00:00:00

Вы можете удалить это только при преобразовании в строку.

0

Как уже упоминалось некоторыми другими

var now = DateTime.Now; 
var today = now.Date; 

является Предпочитаемый способ. Однако, так как мне нравится timtowtdi philosophi:

var now = DateTime.Now; 
var today = now.Add(-now.TimeOfDay); 
+0

* Теоретически * это может привести к неприятностям из-за разницы во времени между двумя вашими утверждениями :) –

+0

thats way Я сначала назначаю переменную. Поскольку DateTime - это Struct, теперь является текущей версией текущей даты, а 'now.Add (-now.TimeOfDay)' всегда будет отбрасывать временную часть на '00: 00: 00' –

1

Вы можете обрезать Дата Часам минуты, день ..

DateTime t = DateTime.Now; 
DateTime t2 = t - new TimeSpan(t.Ticks % TimeSpan.TicksPerDay); 

Вы можете использовать также TicksPerHour, TicksPerMinute и TicksPerSecond.

Смежные вопросы