in csharp/EPAM.Deltix.HdTime/Formatter.cs [654:683]
private static String FormatMiddleOccurences(HdDateTime time, String format, IFormatProvider formatProvider)
{
if (String.IsNullOrEmpty(format))
{
format = HdDateTimeFormatter.GetDefaultFormat();
}
// takes away all precise time formats.
MutableString dateTimeFormat;
IDictionary<Int32, String> preciseTimeFormats;
Boolean isPreciseTimeFormat = HdDateTimeFormatter.TakeAwayPreciseTimeFormat(format, out dateTimeFormat, out preciseTimeFormats);
if (!isPreciseTimeFormat)
{
return time.RawDateTime.ToString(format, formatProvider);
}
Byte timestampModulo = time.TimestampModulo;
// in case, when preciseTime is GMT time with nanos component we skip its formatting
if (time.Nanoseconds / 100 != 0)
{ // replace all upper case FFFF symbols with ffff, in case, when whey are upper case and timestamp ticks != 0
CorrectDateTimeFormat(dateTimeFormat, preciseTimeFormats, timestampModulo);
}
MutableString preciseTimeFormattingResult = FormatTimestamp(time.RawDateTime, dateTimeFormat.ToString(), formatProvider);
ValidateDateTimeFormat(format, preciseTimeFormattingResult);
FormatTimestampModuloOccurences(timestampModulo, preciseTimeFormats, preciseTimeFormattingResult);
return preciseTimeFormattingResult.ToString();
}