2008-12-11 16 views
9

Szukałem tutaj informacji o konwersji ciągu znaków typu "16:20" na typ DateTime bez utraty formatu, powiedziałem, że nie chcę dodawać dd/MM/rrrr lub sekundy lub AM/PM, ponieważ db po prostu zaakceptuj ten format.Format daty, jak HH: mm 24 godziny bez AM/PM

Próbowałem z Kultur jeszcze

z góry dzięki

Odpowiedz

12

Wszystkie obiekty DateTime muszą mieć datę i godzinę.

Jeśli chcesz tylko czas, użyj Okres:

TimeSpan span = TimeSpan.Parse("16:20"); 

Jeśli chcesz DateTime, dodać, że czas do wartości min:

TimeSpan span = TimeSpan.Parse("16.20"); 
DateTime dt = DateTime.MinValue.Add(span); 
// will get you 1/1/1900 4:20 PM which can be formatted with .ToString("HH:mm") for 24 hour formatting 
+0

Spróbuję tego, ponieważ widzę, że inny programista, który pracuje w C++, zapisywał dane tak, jak je określasz. –

+0

który działa, ale jest ustawiony w formacie AM/PM –

+1

można usunąć AM/PM w ostatnim formacie? i sprawia, że ​​24 godziny, z góry dzięki –

3

DateTime.Now.ToString ("hh: mm") - Jeśli jest to C#.

Och. Przeczytaj tylko nagłówek.

DateTime dt = new DateTime(2008, 12, 11, Convert.ToInt32("16"), Convert.ToInt32("32"), 0); 
+12

Kapitałowej za czas 24 godzin –

+0

ale konwersji wartości na ciąg prawej? Chcę ustawić typ datetime, ponieważ pracuję z klasy, która zawiera atrybut dla tej wartości –

+0

im uzyskanie wartości z widoku siatki W ten sposób: string godzina = ((Label) selectedRow.Cells [0] .FindControl (" lblHorario ")). Tekst; –

0

Chcę zająć się tą część pytania:

bez utraty formatu

Baza danych będzie powszechnie przechowywać wszystkie wartości datetime w standardowym wspólnym formacie, który nie jest nawet człowiekiem czytelny. Jeśli użyjesz kolumny datetime, oryginalny format zostanie zniszczony.

Jednak po pobraniu wartości można ją przesłać z powrotem do dowolnego żądanego formatu. Jeśli chcesz HH:mm, możesz go zdobyć.

+0

Naprawiłem pytanie, więc "bez luźnej" części komentarza Joela ma teraz mniejszy sens. –

1

co rozumiesz przez "utratę formatu".

po przekonwertowaniu go na typ DateTime, obiekt DateTime będzie miał dd/mm/rr i inne właściwości. w zależności od tego, jak zamierzasz korzystać z obiektu, możesz "odzyskać" swoje pierwotne ustawienia, formatując ciąg znaków w następujący sposób: DT.ToString ("HH: mm");

1

Ponieważ nie określa się, który DBMS używasz, trudno jest wiedzieć, która odpowiedź pomoże. Jeśli korzystasz z produktu IBM Informix Dynamic Server, wystarczy użyć typu danych "DATETIME HOUR TO MINUTE", który będzie rejestrował wartości w 24-godzinnym taktowaniu.

+0

ale po stronie kodowej im przy użyciu linqtosql, więc muszę przekazać wszystkie dane wymagane jako typy DB. –

1
DateTime.Parse("16:20") 
+0

otrzymuję to z fragmentem kodu: 11/12/2008 04:20:00 p.M. –

+0

Im nadal otrzymuję FormatException nieobsługiwany przez kod użytkownika, przy okazji teraz ustawić DateTime po obu stronach, po stronie serwera i po stronie klienta, więc dlaczego stills trowing ten wyjątek? –

17

prostu dać format daty do dateTime .

string DateFormat = "yyyy MM d " to będzie rok miesiąc i dzień. po kontynuowaniu; string DateFormat = "yyyy MM d HH:mm:ss " w tutaj Capital H dadzą możliwość sformatowania 24 hours time format i małych "h" will give you the 12 hours time ...

kiedy dasz dateformat jako ciąg można robić, co chcesz z datą i godziną.

string DateFormat = "yyyyMMdHHmmss"; 
string date = DateTime.Now.ToStrign(DateFormat); 

LUB

Console.writeline(DateTime.Now.ToStrign(DateFormat)); 

wyjściowa: h

20120823132544 
+2

+1 dla "HH da ci 24-godzinny format", nigdy o tym nie wiedziałam, dzięki! –

Powiązane problemy