我的持续时间包含帧:

e.g1: 00:00:00:00
     hh:mm:ss:FR


FR-代表中东/亚洲地区为25帧的帧。

但是在C#中,它将最后的FR作为秒(即60秒)。

 e.g2: 00:00:00:00
      DD:hh:mm:ss


现在如何在C#中添加e.g1

我可以用这种格式知道如何增加两个时长。

  TimeSpan t1 = TimeSpan.Parse(duration);
  TimeSpan t2 = TimeSpan.Parse("00:00:30:18");
  TimeSpan t3 = t1.Add(t2);

最佳答案

在此持续时间内,"00:00:30:18" 18被认为是毫秒而不是帧,因此Timespan.Duration不适用于您,并且您需要一些自定义项(用于显示可能会起作用,但不能加减):

public static class Extensions
{
    public static TimeSpan AddWithFrames(this TimeSpan x, TimeSpan ts)
    {
        int fr = ts.Seconds + x.Seconds;
        TimeSpan result = x.Add(ts).Add(new TimeSpan(0,0,fr/25,0));
        return new TimeSpan(result.Days, result.Hours, result.Minutes, fr % 25);
    }
}


并像这样使用它:

 TimeSpan t1 = TimeSpan.Parse(duration);
  TimeSpan t2 = TimeSpan.Parse("00:00:30:18");
  TimeSpan t3 = t1.AddWithFrames(t2);

关于c# - 添加包含帧的持续时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53896706/

10-13 02:53