Convert TimeSpan from format “hh:mm:ss” to “hh:mm”

霸气de小男生 提交于 2019-11-28 09:36:21

You need to convert your data to TimeSpan and then use format:"hh\:mm"

string test ="08:00:00";
TimeSpan ts = TimeSpan.Parse(test);
Console.Write(ts.ToString(@"hh\:mm"));

In your case:

var test = dataRow.Field<TimeSpan>("fstart").ToString(@"hh\:mm"));

Remember to escape the colon :

You may see: Custom TimeSpan Format Strings

There is no need to convert from hh.mm.ss to hh.mm. TimeSpan is stored as a number of ticks (1 tick == 100 nanoseconds) and has no inherent format. What you have to do, is to convert the TimeSpan into a human readable string! This is called formatting. If you do not specify a format explicitly, a default format will be used. In this case hh.mm.ss.

string formatted = timespan.ToString(@"hh\.mm");

Note: This overload of ToString exists since .NET 4.0. It does not support date and time placeholder separator symbols! Therefore you must include them as (escaped) string literals.

The usual way of formatting strings seems not to work for some odd reason (tested with .NET 3.5). (It does not make any difference whether you escape the separator symbol or not):

var timespan = TimeSpan.FromSeconds(1234);
string formatted = String.Format("{0:hh.mm}", timespan); // ==> 00:20:34

However, you can construct the string like this

string formatted =
    String.Format("{0:00}.{1:00}", Math.Floor(timespan.TotalHours), timespan.Minutes);

or starting with VS2015 / C# 6.0, using string interpolation:

string formatted = $"{Math.Floor(timespan.TotalHours):00}.{timespan.Minutes:00}";
Danilo Vulović

You can use TimeSpan methods:

ToString("hh':'mm")
// or
ToString(@"hh\:mm")

Also check all available formats here http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

var test = dataRow.Field<TimeSpan>("fstart").ToString("hh.mm");  
//test ="08:00"  
var tb = (TextBox) gridViewRow.Cells[2].FindControl("fstart");
tb.Text = test;

The previous solutions don't run if hours>24, try this solution if you have time in minutes very big

int minutes = 159000;
TimeSpan t = new TimeSpan(0, minutes, 0);

String HOURS = Math.Round(t.TotalHours, 0).ToString();
if (HOURS.Length==1)
{
    HOURS = "0"+HOURS;
}


String MINUTES = t.Minutes.ToString();
if (MINUTES.Length == 1)
{
    MINUTES = "0" + MINUTES;
}


String RESULT = HOURS + ":" + MINUTES;
Ravi Rajan

You can achieve this by:

  var hhmm = TimeSpan.FromMinutes(minutes).ToString(@"hh\:mm")
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!