我试图创建一个IFormatProvider可以识别DateTime对象的自定义格式字符串的实现.这是我的实现:
public class MyDateFormatProvider : IFormatProvider, ICustomFormatter
{
public object GetFormat(Type formatType)
{
if (formatType == typeof(ICustomFormatter))
{
return this;
}
return null;
}
public string Format(string format, object arg, IFormatProvider formatProvider)
{
if(arg == null) throw new ArgumentNullException("arg");
if (arg.GetType() != typeof(DateTime)) return arg.ToString();
DateTime date = (DateTime)arg;
switch(format)
{
case "mycustomformat":
switch(CultureInfo.CurrentCulture.Name)
{
case "en-GB":
return date.ToString("ddd dd MMM");
default:
return date.ToString("ddd MMM dd");
}
default:
throw new FormatException();
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在这样的DateTime.ToString(string format, IFormatProvider provider) …
我的时间跨度是例如:
Timespan span = new Timespan(40,24,34);
Run Code Online (Sandbox Code Playgroud)
我有这条线
FormClock.Text = TimeToInstall.ToString(@"hh\:mm\:ss");
Run Code Online (Sandbox Code Playgroud)
我想像这样在文本中显示它:
40:24:34
这该怎么做?
嗨,我必须执行总小时数,为此我使用下面的代码 c#:首先将 hourtot 转换为时间跨度然后我执行总和,最后总和我得到 08:30,这是不可能的,我怎么能解决这个?这是因为什么?
C# 代码:
/*
hourtot values:
08:30
10:00
09:00
08:30
10:00
10:30*/
TimeSpan tot= TimeSpan.Zero;
foreach (DataRow dr in dt.Rows)
{
String hourtot= r.CaricaOreGiornaliere(dr["date"].ToString());
if(hourtot.Equals("00:00") == false)
{
TimeSpan hourcant= TimeSpan.Parse(hourtot.ToString());
tot= tot+ hourcant;
}
}
labelris.text = "" + tot.ToString(@"hh\:mm"); //this print 08:30
Run Code Online (Sandbox Code Playgroud)