我想在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"
答案 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"));
请记住逃避冒号:
答案 1 :(得分:12)
无需将hh.mm.ss
转换为hh.mm
。 TimeSpan
存储为多个刻度(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")