将TimeSpan从格式“hh:mm:ss”转换为“hh:mm”

时间:2012-10-01 12:24:12

标签: c# asp.net textbox timespan

我想在TextBox中只显示小时和分钟

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

如何仅显示小时和分钟"hh.mm"

7 个答案:

答案 0 :(得分:64)

您需要将数据转换为TimeSpan,然后使用格式:"hh\:mm"

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

在你的情况下:

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

请记住逃避冒号:

您可能会看到:Custom TimeSpan Format Strings

答案 1 :(得分:12)

无需将hh.mm.ss转换为hh.mmTimeSpan存储为多个刻度(1 tick == 100纳秒),并且没有固有格式。你要做的是将TimeSpan转换为人类可读的字符串!这称为格式化。如果未明确指定格式,则将使用默认格式。在这种情况下hh.mm.ss

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

注意:自.NET 4.0以来,存在ToString的重载。 它不支持日期和时间占位符分隔符号!因此,您必须将它们包含为(转义的)字符串文字。

格式化字符串的常用方法似乎不适用于某些奇怪的原因(使用.NET 3.5测试)。 (不管是否转义分隔符号都没有任何区别):

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

但是,您可以像这样构建字符串

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

或从VS2015 / C#6.0开始,使用字符串插值:

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

答案 2 :(得分:7)

您可以使用TimeSpan方法:

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

此处还会检查所有可用格式http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

答案 3 :(得分:2)

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

答案 4 :(得分:2)

我知道这是一个非常老的问题。如果有人想以几位数显示小时数,则可以使用

Recipes

这样,当您的工作时间达到两位数时,我的意思是大于9,那么它将显示10:00之类的东西。

答案 5 :(得分:0)

如果小时> 24,以前的解决方案不会运行,如果您有几分钟的时间,请尝试此解决方案

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;

答案 6 :(得分:0)

您可以通过以下方式实现这一目标:

  var hhmm = TimeSpan.FromMinutes(minutes).ToString(@"hh\:mm")