2011-09-13 23 views
7

Tengo una cadena como esta "24:00:00" y me gustaría convertirla a tiempo. Intenté convertir y DateTime.Parse, pero parece que también necesita una fecha. ¿Hay alguna forma de ganar tiempo o tengo que poner una fecha también?C# cadena de conversión a la hora de fecha

+7

FYI, el tiempo de 24 horas va de 0:00:00 a 23:59:59 y 24:00:00 no será válido. – crashmstr

+0

Echa un vistazo aquí: http://stackoverflow.com/questions/4253270/c-how-to-convert-string-into-time-format-used-for-time-range –

Respuesta

15

Si solo está interesado en el componente de tiempo, considere usar TimeSpan en lugar del DateTime completo.

var time = TimeSpan.Parse("23:59:59"); 
+0

Sé que hay algunos formatos de fecha extraños ... pero tener un mes en el medio de la vida es uno nuevo para mí ;-) – musefan

+0

¡Doh! Tengo mi mes y minutos mezclados! eliminado de todos modos antes de que me dijeras. –

3

No estoy seguro de que "24:00:00" va a ser un momento válido. De cualquier modo, que no es necesario especificar la fecha, puede hacer ...

DateTime time = DateTime.ParseExact("23:59:59", "HH:mm:ss", null); 

Si el tiempo es en realidad un momento del día, entonces sugeriría pegarse con DateTime. Si está utilizando realmente una cantidad de tiempo (es decir, puede ser más que 23:59:59) entonces se podría utilizar TimeSpan ...

TimeSpan time = TimeSpan.ParseExact("23:59:59", "HH:mm:ss", null); 

no se olvide, ambos tienen una versión TryParseExact si no está Asegúrese de que la entrada será válida

0

¿Qué tal

var time = new DateTime.Today; 
var str = "24:00:00"; 
var split = str.split(":"); 

time.AddHours(Convert.ToInt32(split[0])); 
time.AddMinutes(Convert.ToInt32(split[1])); 
time.AddSeconds(Convert.ToInt32(split[2])); 

Espero que esto ayude.

2

Puede usar DateTimeFormatInfo para formatear su DateTime.

string strDate = "23:10:00"; 
DateTimeFormatInfo dtfi = new DateTimeFormatInfo(); 
dtfi.ShortTimePattern = "hh:mm:ss"; 
dtfi.TimeSeparator = ":"; 
DateTime objDate = Convert.ToDateTime(strDate, dtfi); 
Console.WriteLine(objDate.TimeOfDay.ToString()); 
Cuestiones relacionadas