c# - convertir - timespan to datetime online
AM/PM a TimeSpan (4)
Quiero lograr lo contrario de this , es decir, quiero convertir una string
con formato hh:mm tt
en un TimeSpan
con segundos de cero.
Por ejemplo, 09:45 pm
se convierte a 21:45:00
.
El enfoque más simple probablemente sería analizarlo como un DateTime
usando DateTime.ParseExact
, y luego usar TimeOfDay
para obtener el TimeSpan
.
DateTime dateTime = DateTime.ParseExact(text,
"hh:mm tt", CultureInfo.InvariantCulture);
TimeSpan span = dateTime.TimeOfDay;
Es extraño ver un 0 a la izquierda en una cantidad de horas cuando también está especificando un designador de am / pm. Es posible que desee "h" en lugar de "hh" en la cadena de formato, para permitir "9:45 pm" en lugar de "09:45 pm".
(También diría que es un uso extraño de TimeSpan
en primer lugar, pero en mi opinión, los tipos de fecha / hora de .NET están un poco desordenados. Recomiendo usar Noda Time , pero estoy sesgado :)
Este trabajo para mi
TimeSpan ts= DateTime.Parse("8:00 PM").TimeOfDay;
Puede convertir el tiempo de meridiem en el intervalo de tiempo y también el intervalo de tiempo en el de meridiem con la fecha y solo el tiempo utilizando el código siguiente snipet ...
TimeSpan ts = DateTime.Parse("8:00 PM").TimeOfDay;
DateTime dateWithTimeSlot = DateTime.Today+ ts;
//for getting MM/dd/yyyy hh:mm tt format
string dateWithMeridiemTimeSlot =
dateWithTimeSlot.ToString("MM/dd/yyyy hh:mm tt: ", CultureInfo.InvariantCulture);
Console.WriteLine("For getting MM/dd/yyyy hh:mm tt format: "+dateWithMeridiemTimeSlot);
//for getting only hh:mm tt format
string meridiemTimeSlot =
dateWithTimeSlot.ToString("hh:mm tt", CultureInfo.InvariantCulture);
Console.WriteLine("For getting only hh:mm tt format: " + meridiemTimeSlot);
Console.ReadLine();
¡Disfrutemos!
Gracias
TimeSpan tspan;
tspan = DateTime.ParseExact("01:45 PM", "hh:mm tt", CultureInfo.InvariantCulture).TimeOfDay;