public static DateTime FromSortableIntTime(this long sortableDateTime, DateTime datePart = default(DateTime))
{
const int noMilliseconds = 1000000;
bool hasMilliseconds = sortableDateTime > noMilliseconds*10;
int milliseconds = 0;
if(hasMilliseconds)
{
milliseconds = (int)(sortableDateTime%1000);
sortableDateTime /= 1000;
}
int seconds = (int)sortableDateTime%100;
sortableDateTime /= 100;
int minutes = (int)sortableDateTime%100;
sortableDateTime /= 100;
int hours = (int)sortableDateTime;
DateTime dt = new DateTime(datePart.Year, datePart.Month, datePart.Day, hours, minutes, seconds, milliseconds, datePart.Kind);
return dt;
}