Załóżmy, że mam wartość 6/22/2009 10:00:00. Jak uzyskać tylko 10:00 od tej daty.
Załóżmy, że mam wartość 6/22/2009 10:00:00. Jak uzyskać tylko 10:00 od tej daty.
Odpowiedzi:
Masz na to wiele opcji:
DateTime dt = DateTime.Parse("6/22/2009 07:00:00 AM");
dt.ToString("HH:mm"); // 07:00 // 24 hour clock // hour is always 2 digits
dt.ToString("hh:mm tt"); // 07:00 AM // 12 hour clock // hour is always 2 digits
dt.ToString("H:mm"); // 7:00 // 24 hour clock
dt.ToString("h:mm tt"); // 7:00 AM // 12 hour clock
Pomocne łącze: wzorce DateTime.ToString ()
ss
to sekundy z zerem wiodącym i s
sekundy bez
Od a DateTime
możesz użyć .TimeOfDay
- ale to daje TimeSpan
reprezentację czasu w ciągu dnia (10 godzin).
W języku C # występuje tylko typ DateTime i składa się z części zawierającej datę i godzinę. Jeśli nie zależy Ci na części Date w DateTime, ustaw ją na wartość domyślną w następujący sposób:
DateTime myTime = default(DateTime).Add(myDateTime.TimeOfDay)
W ten sposób możesz zachować spójność we wszystkich wersjach .NET, nawet jeśli Microsoft zdecyduje się zmienić datę bazową na inną niż 01.01.10001.
Warto przyjrzeć się metodzie DateTime.ToShortTimeString () .
Ponadto istnieje wiele innych metod i właściwości obiektu DateTime, które mogą pomóc w sformatowaniu daty lub godziny w dowolny sposób. Wystarczy spojrzeć na dokumentację.
Spróbuj tego:
TimeSpan TodayTime = DateTime.Now.TimeOfDay;
Można to zrobić na różne sposoby. Możesz użyć, DateTime.Now.ToLongTimeString()
który zwraca tylko czas w formacie ciągu.
DateTime.ToLongTimeString()
raczej niż DateTime.Now.ToLongTimeString()
. Biorąc pod uwagę wiek tego wątku, najlepiej go nie wskrzeszać, chyba że reakcja przyczyni się do znacznej poprawy w stosunku do poprzednich odpowiedzi.
Możesz po prostu napisać
string time = dateTimeObect.ToString("HH:mm");
DateTime now = DateTime.Now;
now.ToLongDateString(); // Wednesday, January 2, 2019
now.ToLongTimeString(); // 2:33:59 PM
now.ToShortDateString(); // 1/2/2019
now.ToShortTimeString(); // 2:16 PM
now.ToString(); // 1/2/2019 2:33:59 PM
jeśli korzystasz z widoku siatki, możesz wyświetlić tylko czas na DataFormatString="{0:t}"
przykładzie:
By bind the value:-
<asp:Label ID="lblreg" runat="server" Text='<%#Eval("Registration_Time ", "{0:t}") %>'></asp:Label>
By bound filed:-
<asp:BoundField DataField=" Registration_Time" HeaderText="Brithday" SortExpression=" Registration Time " DataFormatString="{0:t}"/>
Jeśli chcesz porównać czasy, a nie daty, możesz po prostu mieć standardową datę porównania lub dopasować do używanej daty, na przykład ...
DateTime time = DateTime.Parse("6/22/2009 10:00AM");
DateTime compare = DateTime.Parse(time.ToShortDateString() + " 2:00PM");
bool greater = (time > compare);
Być może są na to lepsze sposoby, ale daty są zgodne.
Musisz również wziąć pod uwagę rodzaj DateTime.
public static DateTime GetTime(this DateTime d)
{
return new DateTime(d.TimeOfDay.Ticks, d.Kind);
}