mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-26 23:12:38 +02:00
timecode: add prefix-sign helper method
This commit is contained in:
parent
25aca3582b
commit
f37a3864ef
@ -6,6 +6,7 @@ namespace Nikse.SubtitleEdit.Core
|
||||
{
|
||||
public class TimeCode
|
||||
{
|
||||
private static readonly char[] TimeSplitChars = new[] { ':', ',', '.' };
|
||||
public const double BaseUnit = 1000.0; // Base unit of time
|
||||
private double _totalMilliseconds;
|
||||
|
||||
@ -19,7 +20,7 @@ namespace Nikse.SubtitleEdit.Core
|
||||
|
||||
public static double ParseToMilliseconds(string text)
|
||||
{
|
||||
string[] parts = text.Split(new[] { ':', ',', '.' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] parts = text.Split(TimeSplitChars, StringSplitOptions.RemoveEmptyEntries);
|
||||
if (parts.Length == 4)
|
||||
{
|
||||
int hours;
|
||||
@ -36,7 +37,7 @@ namespace Nikse.SubtitleEdit.Core
|
||||
|
||||
public static double ParseHHMMSSFFToMilliseconds(string text)
|
||||
{
|
||||
string[] parts = text.Split(new[] { ':', ',', '.' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] parts = text.Split(TimeSplitChars, StringSplitOptions.RemoveEmptyEntries);
|
||||
if (parts.Length == 4)
|
||||
{
|
||||
int hours;
|
||||
@ -155,12 +156,7 @@ namespace Nikse.SubtitleEdit.Core
|
||||
string decimalSeparator = localize ? CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator : ",";
|
||||
string s = string.Format("{0:00}:{1:00}:{2:00}{3}{4:000}", ts.Hours + ts.Days * 24, ts.Minutes, ts.Seconds, decimalSeparator, ts.Milliseconds);
|
||||
|
||||
if (TotalMilliseconds >= 0)
|
||||
{
|
||||
return s;
|
||||
}
|
||||
|
||||
return "-" + s.RemoveChar('-');
|
||||
return PrefixSign(s);
|
||||
}
|
||||
|
||||
public string ToShortString(bool localize = false)
|
||||
@ -180,13 +176,7 @@ namespace Nikse.SubtitleEdit.Core
|
||||
{
|
||||
s = string.Format("{0:0}:{1:00}:{2:00}{3}{4:000}", ts.Hours + ts.Days * 24, ts.Minutes, ts.Seconds, decimalSeparator, ts.Milliseconds);
|
||||
}
|
||||
|
||||
if (TotalMilliseconds >= 0)
|
||||
{
|
||||
return s;
|
||||
}
|
||||
|
||||
return "-" + s.RemoveChar('-');
|
||||
return PrefixSign(s);
|
||||
}
|
||||
|
||||
public string ToShortStringHHMMSSFF()
|
||||
@ -221,13 +211,7 @@ namespace Nikse.SubtitleEdit.Core
|
||||
{
|
||||
s = string.Format("{0:00}:{1:00}:{2:00}:{3:00}", ts.Days * 24 + ts.Hours, ts.Minutes, ts.Seconds, SubtitleFormat.MillisecondsToFramesMaxFrameRate(ts.Milliseconds));
|
||||
}
|
||||
|
||||
if (TotalMilliseconds >= 0)
|
||||
{
|
||||
return s;
|
||||
}
|
||||
|
||||
return "-" + s.RemoveChar('-');
|
||||
return PrefixSign(s);
|
||||
}
|
||||
|
||||
public string ToSSFF()
|
||||
@ -243,13 +227,7 @@ namespace Nikse.SubtitleEdit.Core
|
||||
{
|
||||
s = string.Format("{0:00}:{1:00}", ts.Seconds, SubtitleFormat.MillisecondsToFramesMaxFrameRate(ts.Milliseconds));
|
||||
}
|
||||
|
||||
if (TotalMilliseconds >= 0)
|
||||
{
|
||||
return s;
|
||||
}
|
||||
|
||||
return "-" + s.RemoveChar('-');
|
||||
return PrefixSign(s);
|
||||
}
|
||||
|
||||
public string ToHHMMSSPeriodFF()
|
||||
@ -266,14 +244,11 @@ namespace Nikse.SubtitleEdit.Core
|
||||
s = string.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Days * 24 + ts.Hours, ts.Minutes, ts.Seconds, SubtitleFormat.MillisecondsToFramesMaxFrameRate(ts.Milliseconds));
|
||||
}
|
||||
|
||||
if (TotalMilliseconds >= 0)
|
||||
{
|
||||
return s;
|
||||
}
|
||||
|
||||
return "-" + s.RemoveChar('-');
|
||||
return PrefixSign(s);
|
||||
}
|
||||
|
||||
private string PrefixSign(string time) => TotalMilliseconds >= 0 ? time : $"-{time.RemoveChar('-')}";
|
||||
|
||||
public string ToDisplayString()
|
||||
{
|
||||
if (IsMaxTime)
|
||||
|
Loading…
Reference in New Issue
Block a user