2012-06-19 24 views
21

Przy użyciu C#, mam obiekt datetime, ale wszystko, czego chcę, to godzina i minuty od niego w obiekcie datetime.Uzyskiwanie tylko godziny/minuty datetime

Tak na przykład: jeśli mam DateTime przedmiot July 1 2012 12:01:02 wszystko czego chcę to July 1 2012 12:01:00 w obiekcie datetime (tak, nie ma sekundy).

Odpowiedz

37

Spróbuj tego:

var src = DateTime.Now; 
var hm = new DateTime(src.Year, src.Month, src.Day, src.Hour, src.Minute, 0); 
22

Wystarczy użyć Hour i Minute właściwości

var date = DateTime.Now; 
date.Hour; 
date.Minute; 

Albo można łatwo wyzerować sekundy przy użyciu

var zeroSecondDate = date.AddSeconds(-date.Second); 
+1

Powiedział "w obiekcie DateTime" ... :) –

+1

@zomkyns Możemy łatwo zerować sekundy z mniejszym kodem niż tworzenie nowej instancji – Ribtoks

+3

@Ribtoks, DateTime jest strukturą i jest niezmienna. Używając AddSeconds tworzy nową instancję klasy DateTime i zwraca ją na swoim miejscu. Tak czy owak, będziesz tworzyć nowy obiekt DateTime. AddSeconds ostatecznie kończy się na wołaniu 'return new DateTime ((UInt64) (ticks + value) | InternalKind)' (patrz: źródło .net - tylko odwołanie). – Joshua

2

Polecam utrzymanie obiektu trzeba i po prostu korzystając z właściwości, które chcesz, r niż usunięcie rozdzielczości, którą już masz.

Jeśli chcesz wydrukować go w określonym formacie, możesz przyjrzeć się this ... W ten sposób możesz zachować rozdzielczość w dalszej linii.

Powiedziawszy, że możesz utworzyć nowy obiekt DateTime, używając tylko właściwości, które chcesz mieć jako @romkyns w swojej odpowiedzi.

12

Spróbuj tego:

String hourMinute; 

hourMinute=DateTime.Now.ToString("HH:mm"); 

Teraz dostaniesz czas w godzinach: Format minut.

+1

To jest najlepsza odpowiedź. Metoda ToString dla DateTime ma być używana tylko w tym celu: Aby sformatować datetime. Zobacz [Dokumenty] (https://msdn.microsoft.com/en-us/library/zdtaw1bw (v = vs.110) .aspx) –

+0

OP poprosił o obiekt DateTime, a nie ciąg. – Koja

Powiązane problemy