2009-10-20 12 views
9

Próbuję zapisać skróconą datę (mm/dd/rrrr) w obiekcie DateTime. Poniższy kod poniżej jest to, co obecnie próbuję zrobić; obejmuje to czas (12:00:00), który nie chce :(Przechowywanie krótkiej daty w obiekcie DateTime

DateTime goodDateHolder = Convert.ToDateTime(DateTime.Now.ToShortDateString()); 

wynik będzie 19.10.2009 00:00:00

Odpowiedz

17

DateTime to liczba całkowita zinterpretowana jako reprezentująca obie części DateTime (tj. Data i godzina). Zawsze będziesz mieć zarówno datę i godzinę w DateTime. Niestety, nic nie możesz z tym zrobić.

Możesz użyć .Date, aby uzyskać część daty. W takich przypadkach zawsze będzie godzina 12:00, ale możesz zignorować tę część, jeśli jej nie chcesz.

+0

Ditto. Co więcej, ciągi z formatem daty w zasadzie pozwalają ignorować części, które Cię nie interesują. Na przykład Porównaj dwie daty używając tego samego ciągu formatu '{MM/dd/rrrr}', a czas nie jest używany. Zwróć uwagę, że faktycznie porównujemy łańcuchy znaków, ale udajemy, że porównujemy obiekty z datami. – radarbob

+0

@radarbob: prawie. W rzeczywistości porównujemy liczby całkowite, które zostały przeanalizowane z dłuższej liczby całkowitej, ale duch tego, co mówisz, jest poprawny. – Dinah

3

Zamiast .Now można użyć .Today, który nie usunie części czasu, ale wypełni tylko część daty i pozostawi czas do wartości domyślnej

Później, jak inni podkreślili, powinieneś postarać się o część daty ignorującą część czasu, w zależności od w tej sytuacji:

+0

DateTime.Today.ToShortDateString() wciąż ma czas jako 12:00:00 AM – mezoid

+0

Tak, masz rację. Podałem więcej informacji. – Petros

3

Masz tylko dwie opcje w tej sytuacji.

1) Zignoruj ​​część czasu wartości.

2) Utwórz klasę opakowania.

Osobiście jestem skłonny do korzystania z opcji 1.

3

datetime zawsze będzie mieć składnik czasu - nawet jeśli jest to 0:00:00. Musisz tylko sformatować DateTime podczas wyświetlania (np. GoodDateHolder.ToShortDateString()).

0

Obiekt DateTime przechowuje zarówno datę, jak i godzinę. Aby wyświetlić tylko datę, należy użyć metody DateTime.ToString (string).

DateTime goodDateHolder = DateTime.Now; 
// outputs 10/19/2009 
Console.WriteLine(goodDateHolder.ToString("MM/dd/yyyy")); 

Więcej informacji o metodę toString, wykonaj to link

+1

W większości przypadków lepiej jest użyć ToShortDateString, aby komponent daty używał zlokalizowanego formatu. –

0

może nie być w stanie uzyskać go jako obiekt DateTime ... ale jeśli chcesz go wyświetlić można sformatować go w sposób, w jaki chcesz, robiąc coś takiego.

myDateTime.ToString ("M/d/rrrr"), który daje 10/19/2009 dla twojego przykładu.

0

Zawsze otrzymasz porcję czasu w typie DateTime.

DateTime goodDateHolder = Convert.ToDateTime(DateTime.Now.ToShortDateString()); 

poda dzisiejszą datę, ale zawsze wskaże godzinę północy.

Jeśli martwisz się o formatowaniu wtedy można spróbować czegoś jak ten

goodDateHolder.ToString("mm/dd/yyyy") 

uzyskać datę w formacie, który chcesz.

Jest dobrym źródłem msdn-dateformat

0

DateTime jest jedynie UInt64 użytecznych i pomysłowych formatowania owiniętym wokół niego, aby wyglądać datą plus czas.Nie można wyeliminować elementu czasu.

1

Możesz również sprawdzić Noda Time w oparciu o bibliotekę Java Joda Time.

Powiązane problemy