如何实现字符串转换的时间跨度?

时间:2010-03-05 06:12:41

标签: c# string timespan datetime-format

我尝试搜索here,但它对我帮助不大..
我想 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");

8 个答案:

答案 0 :(得分:17)

尝试使用

DateTime d = new DateTime(time_span.Ticks);
string time = d.ToString("HH:mm:ss");

答案 1 :(得分: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);

答案 2 :(得分: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)Kelseys;)

答案 3 :(得分:3)

我实施的代码是:

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

最初由Marc Gravell发布,

答案 4 :(得分:3)

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

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

那将输出

00:26:39

对于那些绊倒这个的人(比如我自己)有帮助。

干杯:)

答案 5 :(得分:1)

只需将ticks的值转换为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" )

答案 6 :(得分: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));

答案 7 :(得分:0)

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

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

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