我只想在文本框中显示小时和分钟
var test = dataRow.Field<TimeSpan>("fstart").ToString();
//test ="08:00:00"
var tb = (TextBox) gridViewRow.Cells[2].FindControl("fstart");
tb.Text = test;
如何只显示小时和分钟"hh.mm"
您需要将数据转换为 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"));
记得避开冒号:
您可能会看到:自定义 TimeSpan 格式字符串
无需从 转换hh.mm.ss
为hh.mm
。TimeSpan
存储为多个滴答声(1 个滴答声 == 100 纳秒)并且没有固有格式。您要做的就是将 转换TimeSpan
为人类可读的字符串!这涉及格式化。如果您没有明确指定格式,将使用默认格式。在这种情况下hh.mm.ss
。
string formatted = timespan.ToString(@"hh\.mm");
注意:ToString
自 .NET 4.0 以来就存在这种重载。它不支持日期和时间占位符分隔符!因此,您必须将它们包含为(转义的)字符串文字。
由于某些奇怪的原因,格式化字符串的常用方法似乎不起作用(使用 .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 = $@"{timespan:hh\:mm}";
您可以使用 TimeSpan 方法:
ToString("hh':'mm")
// or
ToString(@"hh\:mm")
还要在此处检查所有可用格式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;
我知道这是一个非常古老的问题。如果有人想在您的小时数为一位数时显示一位数小时数,那么您可以使用
var hoursWithMinutes = TimeSpan.FromHours(hours).ToString(@"h\:mm")
这样,当你的小时数是两位数时,我的意思是大于 9,那么它将显示 10:00 类似的东西。
如果 hours>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;
您可以通过以下方式实现:
var hhmm = TimeSpan.FromMinutes(minutes).ToString(@"hh\:mm")