9

我尝试在这里搜索,但对我没有多大帮助..
我想time_span 转换为字符串,我不想以天为单位返回时间跨度..但只有 HH:mm:ss。如何做到这一点?

我的示例代码在这里:

              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");
4

8 回答 8

17

尝试使用

DateTime d = new DateTime(time_span.Ticks);
string time = d.ToString("HH:mm:ss");
于 2010-03-05T06:18:17.257 回答
6

这应该有效:

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);
于 2010-03-05T06:18:46.187 回答
3

试试这个:

    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)凯尔西;)

于 2010-03-05T06:26:45.283 回答
3

我实现的代码是:

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

最初由Marc Gravell发布,

于 2010-03-05T06:42:22.457 回答
3

现在有一种更简单的方法(尽管只使用框架 4),您只需要按字面意思使用字符串,并且可以直接在 TimeSpan 实例上执行此操作。

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

那将输出

00:26:39

现在对偶然发现这个问题的人(比如我自己)很有帮助。

干杯:)

于 2012-06-06T09:13:07.983 回答
1

只需将刻度的值转换为 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" )
于 2010-03-05T06:21:24.527 回答
1
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));
于 2010-03-05T06:34:15.943 回答
0

如果天数无关紧要,那么您就有了解决方案,但是我遇到了这个答案,以搜索总共给出小时数的转换,因此需要将 36 小时显示为 36:00:00。使用上面的一些提示是我想出的:

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

总小时数总是向下舍入,分钟和秒被填充为 2 位数字 (00 - 09)

于 2011-08-31T11:37:05.890 回答