Как добиться преобразования времени в строку? - PullRequest
9 голосов
/ 05 марта 2010

Я попытался найти здесь , но это мне мало чем помогло ..
Я хочу преобразовать time_span в строку, я не хочу возвращать временной интервалв днях .. но только ЧЧ: мм: сс.Как этого добиться?

Мой пример кода здесь:

              String time_span_par = "06:12:40";
              String time_str = "18:13:59";
              TimeSpan time_span_var = TimeSpan.Parse(time_span_par);
              TimeSpan time_span = TimeSpan.Parse(time_str);

              time_span = time_span.Add(time_span_var);
              string temp = time_span.ToString("HH:mm:ss");

Ответы [ 8 ]

17 голосов
/ 05 марта 2010

Попробуйте использовать

DateTime d = new DateTime(time_span.Ticks);
string time = d.ToString("HH:mm:ss");
6 голосов
/ 05 марта 2010

Это должно работать:

string temp = string.Format("{0}:{1}:{2}",
    time_span.Hours.ToString(), time_span.Minutes.ToString(),
    time_span.Seconds.ToString());

В соответствии с комментарием, если вы хотите двойные цифры, которые вы можете сделать:

string temp = string.Format("{0}:{1}:{2}",
    time_span.Hours.ToString("00"), time_span.Minutes.ToString("00"),
    time_span.Seconds.ToString("00"));

Отредактировано: в соответствии с комментарием Джимми,

string temp = string.Format("{0:00}:{1:00}:{2:00}",time_span.Hours, time_span.Minutes, time_span.Seconds);
3 голосов
/ 06 июня 2012

Существует гораздо более простой способ сделать это сейчас (хотя только с использованием framework 4), вам просто нужно использовать строку буквально, и вы можете сделать это непосредственно в экземпляре TimeSpan.

time_span.ToString(@"hh\:mm\:ss")

Это выдаст

00:26:39

Теперь полезно для людей, которые сталкиваются с этим (как и я).

Приветствия:)

3 голосов
/ 05 марта 2010

Код, который я реализовал:

          string temp = DateTime.Today.Add(time_span).ToString("HH:mm:ss");

Первоначально опубликовано Марк Гравелл ,

3 голосов
/ 05 марта 2010

Попробуйте это:

    time_span = time_span.Add(time_span_var);
    string temp = time_span.ToString();
    temp = string.Format("{0}:{1}:{2}", time_span.TotalHours, time_span.TotalMinutes, time_span.TotalSeconds);

Редактировать После того, как я прочел ваш комментарий к вашему вопросу, то есть вам нужно отобразить ноль часов для новых дней, мой ответ даст вам общее количество часов, минут и секунд, а не то, что вы хотите.

(+ 1) Келсей;)

1 голос
/ 05 марта 2010
String time_span_par = "06:12:40";
String time_str = "18:13:59";
TimeSpan time_span_var = TimeSpan.Parse(time_span_par);
TimeSpan time_span = TimeSpan.Parse(time_str);

TimeSpan finalTime =  (time_span_var + time_span);
Console.WriteLine(finalTime);
Console.WriteLine(finalTime - TimeSpan.FromHours(finalTime.Days * 24));
1 голос
/ 05 марта 2010

Просто преобразуйте значение тиков в DateTime, а затем используйте его ToString ()

var date1 = DateTime.Now;
var date2 = DateTime.Now.AddSeconds( -1000 );
var diff = date1 - date2;
var temp = new DateTime( diff.Ticks ).ToString( "HH:mm:ss" )
0 голосов
/ 31 августа 2011

Если количество дней не имеет значения, то у вас есть решение, однако я наткнулся на этот ответ в поисках конверсии, которая дала бы всего часов, поэтому 36 часов нужно будет отображать как 36:00:00. Используя некоторые из приведенных выше советов, я пришел к следующему:

SomeLabel.Text = Math.Floor(ts.TotalHours).ToString() + ":" + ts.Minutes.ToString("D2") + ":" + ts.Seconds.ToString("D2");

Общее количество часов всегда округляется в меньшую сторону, минуты и секунды дополняются до 2 цифр (00–09)

...