2010-04-26 14 views
7

Time.ToString("0.0") aparece como un decimal "1.5" en lugar de 1:30. ¿Cómo puedo hacer que se muestre en un formato de hora?Convertir una hora en una cadena formateada en C#

private void xTripSeventyMilesRadioButton_CheckedChanged(object sender, EventArgs e) 
{ 
    //calculation for the estimated time label 
    Time = Miles/SeventyMph; 
    this.xTripEstimateLabel.Visible = true; 
    this.xTripEstimateLabel.Text = "Driving at this speed the estimated travel time in hours is: " + Time.ToString("0.0") + " hrs"; 
} 
+0

¿Qué tipo es el tiempo? ¿es flotante? –

Respuesta

25
Time.ToString("hh:mm") 

Formatos:

HH:mm = 01:22 
hh:mm tt = 01:22 AM 
H:mm = 1:22 
h:mm tt = 1:22 AM 
HH:mm:ss = 01:22:45 

EDIT: Desde ahora sabemos que el tiempo es un cambio double el código a (suponiendo que deseas horas y minutos):

// This will handle over 24 hours 
TimeSpan ts= System.TimeSpan.FromHours(Time); 
string.Format("{0}:{1}", System.Math.Truncate(ts.TotalHours).ToString(), ts.Minutes.ToString()); 

o

// Keep in mind this could be bad if you go over 24 hours 
DateTime.MinValue.AddHours(Time).ToString("H:mm"); 
+0

Funcionó como un encanto gracias –

+0

Si es la respuesta correcta, por favor márquelo como tal :) – Kelsey

+0

esto funcionó para mí también, aunque me gustaría añadir que es una buena práctica pasar una cultura al hacer .ToString(), ya sea CultureInfo. InvariantCulture o CultureInfo.CurrentCulture (Microsoft FxCop lo recomienda también) – mattytommo

2

Si Time es una System.Double, entonces System.TimeSpan.FromHours(Time).ToString();

+0

(System.TimeSpan.FromHours (Time) .ToString()) funciona muy bien gracias, pero ¿cómo puedo concatenar la cadena para poner fuera solo 8:30 en lugar de 00: 00: 00.00000 –

+0

string.Format ("{0: HH: mm}", DateTime.MinValue + TimeSpan .FromHours (Time)) – Jono

+0

En caso de que te lo estés preguntando, los métodos más elegantes propuestos por otros usuarios son nuevas incorporaciones a .NET 4.0 – Jono

0

Si el tiempo es flotante o el doble que tendrá que. System.Math.Truncate (Time) para obtener las horas

y luego (Time - System.Math.Truncate (Time)) * 60 para obtener los minutos.

+0

Sí, es un doble, pero soy nuevo en C# y la programación en general esta es mi segunda tarea en clase, ¿podrías explicarme más sobre cómo usar esto? Haré el trabajo de campo solo necesito dirección. –

1

Tenga en cuenta que si trabaja en una base de 24 horas, es muy importante utilizar HH:mm y NO hh:mm.

A veces escribo erróneamente hh:mm, y luego en lugar de "13:45" obtengo "01:45", y no hay manera de saber si es AM o PM (a menos que use tt).

0

Gracias por todas las respuestas chicos y chicas, utilicé este DateTime.MinValue.AddHours(Time).ToString("H:mm"); para mi programa, ya que fue el más fácil de implementar.

0

Crear un espacio de tiempo de ti variable numérica:

TimeSpan ts = new TimeSpan(Math.Floor(Time), (Time - Math.Floor(Time))*60); 

A continuación, utilice el método ToString.

Cuestiones relacionadas