online convertir c# datetime timespan

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;