DateTime.ParseExact() does not have a method that takes accepts an INT as an argument
System.DateTime.ParseExact[
^]
Some methods don't like an INT within the method even though it gets concatenized into a string when executed.
Best bet would be to stringify ahead of time, perhaps this would work:
DateTime DTTM;
int crdt = 20180418;
string time = "15:20:37.6789" ;
string timestring= crdt.ToString() + time;
DTTM = DateTime.ParseExact(timestring, "yyyyMMdd HH:mm:ss.FFFF", CultureInfo.InvariantCulture);