in FixAntenna/NetCore/Message/FixTypes.cs [1303:1362]
public static bool IsInvalidTime(byte[] buffer, int offset, int count)
{
try
{
if (count != 17)
{
return true;
}
if (buffer[offset + 8] != (byte)'-' || buffer[offset + 11] != (byte)':' ||
buffer[offset + 14] != (byte)':')
{
return true;
}
var year = ParseNumberPart(buffer, offset, offset + 4);
if (year < 1583)
{
return true;
}
var month = ParseNumberPart(buffer, offset + 4, offset + 6) - 1;
if (month < 0 || month > 11)
{
return true;
}
var date = ParseNumberPart(buffer, offset + 6, offset + 8);
if (date < 1 || date > (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)
? LeapMonthLength[month]
: MonthLength[month]))
{
return true;
}
var hour = ParseNumberPart(buffer, offset + 9, offset + 11);
if (hour < 0 || hour > 23)
{
return true;
}
var minute = ParseNumberPart(buffer, offset + 12, offset + 14);
if (minute < 0 || minute > 59)
{
return true;
}
var second = ParseNumberPart(buffer, offset + 15, offset + 17);
if (second < 0 || second > 60)
{
return true;
}
}
catch (Exception)
{
return true;
}
return false;
}