2010-04-26 13 views
7

Time.ToString("0.0") si presenta come un decimale "1.5" per anziché 1:30. Come posso visualizzarlo in un formato orario?Converti un tempo in una stringa formattata in 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

Che tipo è il tempo? è mobile? –

risposta

25
Time.ToString("hh:mm") 

formati:

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: Da oggi sappiamo che il tempo è un cambiamento double il codice (supponendo che si desidera ore e minuti):

// 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

Ha funzionato come un fascino grazie –

+0

Se è la risposta corretta, contrassegnala come segue :) – Kelsey

+0

ha funzionato anche per me, anche se aggiungo che è buona norma passare una cultura quando si fa .ToString(), CultureInfo. InvariantCulture o CultureInfo.CurrentCulture (Microsoft FxCop consiglia anche questo) – mattytommo

2

Se Time è un System.Double, poi System.TimeSpan.FromHours(Time).ToString();

+0

(System.TimeSpan.FromHours (Time) .ToString()) funziona benissimo, ma come posso concatenare la stringa per mettere solo 8:30 anziché 00: 00: 00.00000 –

+0

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

+0

Nel caso ve lo stiate chiedendo, i metodi più eleganti proposti da altri utenti sono nuove aggiunte a .NET 4.0 – Jono

0

Se il tempo è float o doppio dovrete. System.Math.Truncate (Time) per ottenere le ore

e quindi (Tempo - System.Math.Truncate (Time)) * 60 per ottenere i minuti.

+0

Sì, è un doppio, ma sono nuovo di C# e programmazione in generale questo è il mio secondo incarico in classe, quindi potresti per favore approfondire come usare questo. Farò il legwork solo bisogno di direzione. –

1

Si noti che se si lavora in una base di 24 ore, è molto importante utilizzare HH:mm e NON hh:mm.

A volte erroneamente scrivo hh:mm, e invece di "13:45" ottengo "01:45" e non c'è modo di sapere se è AM o PM (a meno che non si usi tt).

0

Grazie per tutte le risposte ragazzi e ragazze ho usato questo DateTime.MinValue.AddHours(Time).ToString("H:mm"); per il mio programma poiché era il più semplice da implementare.

0

Creare un periodo da voi variabile numerica:

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

Quindi, utilizzare il metodo ToString.