Desidero raggiungere il valore di this, ovvero, voglio convertire un con il formato hh:mm tt
a un numero TimeSpan
con secondi azzerati.AM/PM a TimeSpan
Ad esempio, 09:45 pm
viene convertito in 21:45:00
.
Desidero raggiungere il valore di this, ovvero, voglio convertire un con il formato hh:mm tt
a un numero TimeSpan
con secondi azzerati.AM/PM a TimeSpan
Ad esempio, 09:45 pm
viene convertito in 21:45:00
.
L'approccio più semplice sarebbe probabilmente per analizzare come DateTime
utilizzando DateTime.ParseExact
, e quindi utilizzare il TimeOfDay
di esigere il TimeSpan
.
DateTime dateTime = DateTime.ParseExact(text,
"hh:mm tt", CultureInfo.InvariantCulture);
TimeSpan span = dateTime.TimeOfDay;
E 'strano vedere un 0 su un certo numero di ore quando si è anche specificando un/pm designatore del mattino però. Potresti volere "h" invece di "hh" nella stringa di formato, per consentire "9:45 pm" anziché "09:45 pm".
(Direi anche che si tratta di uno strano uso di TimeSpan
in primo luogo, ma i tipi di data/ora .NET sono un po 'incasinati nella mia vista. Suggerirei di usare Noda Time, ma io sono parziale :)
TimeSpan tspan;
tspan = DateTime.ParseExact("01:45 PM", "hh:mm tt", CultureInfo.InvariantCulture).TimeOfDay;
La risposta esatta è già disponibile http://stackoverflow.com/a/17553758/3893182 – danopz
Questo lavoro per Me.
TimeSpan ts= DateTime.Parse("8:00 PM").TimeOfDay;
Il suo lavoro va bene per me, grazie. – amnippon
Un 'TimeSpan' non ha un formato. –