2014-11-06 3 views
1

Я пересматривают некоторые унаследованного кода и есть это ...Формат DateTime без преобразования строки

DateTime dateTime = DateTime.Now; 

DateTime from = DateTime.Parse(dateTime.ToString("dd/MM/yyyy 00:00:00")); 
DateTime to = DateTime.Parse(dateTime.AddDays(8).ToString("dd/MM/yyyy 23:59:59")); 

от и переменных затем используются в сравнениях Linq/лямбда, так должно быть DateTime.

Я не могу найти способ форматирования переменной DateTime без преобразования ее в строку, а затем обратно в DateTime, это кажется глупым, если не сказать больше.

Несомненно, должен быть способ форматировать DateTime без преобразования его в строку, а затем обратно в DateTime?

+4

'DateTime' не имеет«формат», если это не конвертируется в' string' –

+0

благодарственное как к Söner и Хабиб ... не мог видеть лес за деревьями;) –

ответ

5

Там нет необходимости конвертировать ваш DateTime в строку, а затем разобрать его обратно DateTime, вместо этого использовать DateTime.Date как:

DateTime from = dateTime.Date; 
DateTime to = dateTime.Date.AddDays(9).AddTicks(-1); //or .AddSeconds(-1) if you want 
                // accuracy to a second. 
+0

@DStanley, спасибо, но перед тем, как вы прокомментируете, я * вспомнил *:) \ – Habib

+0

Незначительный пункт, но dateTime.Date.AddDays (8) .AddTicks (-1) дает {13/11/2014 23:59:59}, а DateTime.Parse (dateTime. AddDays (8) .ToString ("dd/MM/yyyy 23:59:59")); дает {14/11/2014 23:59:59} –

+0

да да :) собираюсь получить кофе сейчас. – Habib

3

А DateTime не любых неявного формата. Строковые представления этого имеют. И Today property устанавливает время в полночь.

DateTime from = DateTime.Today; 
DateTime to = DateTime.Today.AddDays(9).AddSeconds(-1); 
+0

Незначительная точка, но DateTime.Today.AddDays (8) .AddSeconds (-1) дает {13/11/2014 23:59:59}, а DateTime.Parse (dateTime.AddDays (8) .ToString ("dd/MM/yyyy 23:59:59 ")); дает {14/11/2014 23:59:59} –

+0

@PaulZahra Yeap, обновлено :) –