Rookie Programmer Aravind
Rookie Programmer Aravind

Reputation: 12154

how to achieve timespan to string conversion?

I tried searching here, but it couldn't help me much ..
I want to convert time_span to string, I don't want to return the timespan in days .. but only HH:mm:ss. How to achieve that?

My sample code is here:

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

Upvotes: 9

Views: 10473

Answers (8)

dan richardson
dan richardson

Reputation: 3939

There is a much simpler way of doing this now (albeit only using framework 4), you just need to use the string literally, and you can do it directly on the TimeSpan instance.

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

That will output

00:26:39

Helpful now for people stumbling across this (like myself).

Cheers :)

Upvotes: 3

MattP
MattP

Reputation: 2863

If the number of days is irrelevant then you have the solution, however I came across this answer searching for a conversion that gave hours in total, so 36 hours would need to be displayed as 36:00:00. Using some of the hints above this is what I came up with:

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

Total Hours is always rounded down, minutes and seconds are padded to be 2 digits (00 - 09)

Upvotes: 0

Kelsey
Kelsey

Reputation: 47726

This should work:

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

As per comment if you want the double digits you could do:

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

Edited:as per jimmy's comment,

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

Upvotes: 6

Rookie Programmer Aravind
Rookie Programmer Aravind

Reputation: 12154

The code I have implemented is:

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

Originally posted by Marc Gravell,

Upvotes: 3

Sameh Deabes
Sameh Deabes

Reputation: 2973

Try this:

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

Edit After I read your comment on your question, that is you need to display zero hours for new days, my answer will give you total hours, minutes and seconds, not what you want.

(+1) Kelseys ;)

Upvotes: 3

shahkalpesh
shahkalpesh

Reputation: 33476

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

Upvotes: 1

Thomas
Thomas

Reputation: 64635

Simply convert the value of ticks into a DateTime and then use its 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" )

Upvotes: 1

Adriaan Stander
Adriaan Stander

Reputation: 166326

Try using

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

Upvotes: 17

Related Questions