相关疑难解决方法(0)

如何为DateTime创建和使用自定义IFormatProvider?

我试图创建一个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) …

c# iformatprovider

20
推荐指数
2
解决办法
5万
查看次数

如何从超过 24 小时的时间跨度显示小时和分钟

我的时间跨度是例如:

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# formatting timespan

1
推荐指数
1
解决办法
5444
查看次数

使用 Sum 将字符串转换为时间跨度

嗨,我必须执行总小时数,为此我使用下面的代码 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)

.net c# timespan

0
推荐指数
1
解决办法
296
查看次数

标签 统计

c# ×3

timespan ×2

.net ×1

formatting ×1

iformatprovider ×1