Преобразовать время в форматированную строку в C # - PullRequest
7 голосов
/ 27 апреля 2010

Time.ToString("0.0") отображается как десятичное «1,5» вместо 1:30. Как я могу заставить его отображать в формате времени?

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";
}

Ответы [ 7 ]

25 голосов
/ 27 апреля 2010
Time.ToString("hh:mm")

Форматы:

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  

РЕДАКТИРОВАТЬ: Поскольку теперь мы знаем, что время double изменить код на (при условии, что вам нужны часы и минуты):

// 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());

или

// Keep in mind this could be bad if you go over 24 hours
DateTime.MinValue.AddHours(Time).ToString("H:mm");
2 голосов
/ 27 апреля 2010

Если Time является System.Double, то System.TimeSpan.FromHours(Time).ToString();

2 голосов
/ 27 апреля 2010

Я думаю, что Time имеет тип TimeSpan? В этом случае документация TimeSpan.ToString может помочь вам, в частности страницы

Если время является числовым типом данных, вы можете использовать TimeSpan.FromHours , чтобы сначала преобразовать его в TimeSpan.

(РЕДАКТИРОВАТЬ: строки формата TimeSpan были введены в .NET 4.)

1 голос
/ 27 апреля 2010

Обратите внимание, что если вы работаете на 24-часовой базе, очень важно использовать HH:mm, а НЕ hh:mm.

Иногда я ошибочно пишу hh:mm, а затем вместо «13:45» я получаю «01:45», и нет никакого способа узнать, будет ли это AM или PM (если вы не используете tt).

0 голосов
/ 01 сентября 2011

Создайте интервал времени из вашей числовой переменной:

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

Затем используйте метод ToString.

0 голосов
/ 27 апреля 2010

Спасибо за все ответы, ребята и девочки, я использовал это DateTime.MinValue.AddHours(Time).ToString("H:mm"); для своей программы, так как она была самой простой в реализации.

0 голосов
/ 27 апреля 2010

Если время будет плавающим или двойным, вам придется. System.Math.Truncate (Time), чтобы получить часы

и затем (Время - System.Math.Truncate (Время)) * 60 чтобы получить минуты.

...