Am o oră care este 16:23:01. Am încercat să folosesc DateTime.ParseExact
, dar nu funcționează.
Iată codul meu:
string Time = "16:23:01";
DateTime date = DateTime.ParseExact(Time, "hh:mm:ss tt", System.Globalization.CultureInfo.CurrentCulture);
lblClock.Text = date.ToString();
Vreau să apară în etichetă ca fiind 04:23:01 PM.
„16:23:01” nu se potrivește cu tiparul „hh:mm:ss tt” – nu are un indicator am/pm, iar 16 clar nu se află într-un ceas de 12 ore. Specificați acest format în parsing partea de parsare, deci trebuie să se potrivească cu formatul datelor existente. Doriți:
DateTime dateTime = DateTime.ParseExact(time, "HH:mm:ss",
CultureInfo.InvariantCulture);
(Observați cultura invariantă, nu cultura curentă – presupunând că datele de intrare utilizează întotdeauna două puncte).
Dacă doriți să să formatați în hh:mm:ss tt
atunci trebuie să puneți acea parte în ToString
apel:
lblClock.Text = date.ToString("hh:mm:ss tt", CultureInfo.CurrentCulture);
Sau mai bine (IMO) folosiți „oricare ar fi modelul de timp lung pentru cultură”:
lblClock.Text = date.ToString("T", CultureInfo.CurrentCulture);
De asemenea, rețineți că hh
este neobișnuit; de obicei, se folosește nu nu se dorește să se introducă 0 în stânga pentru numere mai mici de 10.
(De asemenea, luați în considerare utilizarea Noda Time API, care are o funcție LocalTime
tip – o potrivire mai potrivită pentru o simplă „oră a zilei”).
string Time = "16:23:01";
DateTime date = DateTime.Parse(Time, System.Globalization.CultureInfo.CurrentCulture);
string t = date.ToString("HH:mm:ss tt");
Acest lucru vă oferă rezultatele necesare:
string time = "16:23:01";
var result = Convert.ToDateTime(time);
string test = result.ToString("hh:mm:ss tt", CultureInfo.CurrentCulture);
//This gives you "04:23:01 PM" string
De asemenea, ați putea utiliza CultureInfo.CreateSpecificCulture("en-US")
deoarece nu toate culturile vor afișa AM/PM.
Soluția acceptată nu acoperă cazurile limită. am găsit modalitatea de a face acest lucru cu un script de 4KB. Manipulați intrarea și convertiți o dată.
Exemple:
00:00:00 -> 00:00:00
12:01 -> 12:01:00
12 -> 12:00:00
25 -> 00:00:00
12:60:60 -> 12:00:00
1dg46 -> 14:06
Ați prins ideea… Verificați-o. https://github.com/alekspetrov/time-input-js