 of Jan?
If you have some sort of convention that allows you to determine which date it refers to in these instances you could do some sort of pre - processing or parse the string manually but you're not going to find anything 'built in' for that format

A:

Your situation looks like another widest form issue.
From DateTime.TryParseExact method 

If you do not use date or time separators in a custom format pattern,
  use the invariant culture for the provider parameter and the widest
  form of each custom format specifier. For example, if you want to
  specify hours in the pattern, specify the wider form, "HH", instead of
  the narrower form, "H".

Because of this, parsing strings without any date or time separator might be a problem sometimes.
For example let's talk about "d" custom format specifier. For formatting part, it formats your day part with a single digit without a leading zero. But for parsing, it can parse both 4 and 04 as well. It is the same as "M" custom format specifier. I don't say you should use d specifier for 04. You can, but you shouldn't. You should always use the best formats that fits your string exactly.
Here is my opinion about what is going on here;
Because of the widest form rule, since your string doesn't have any date separator, you format should expect the widest forms of d and M which they are dd and MM. But I think these specifiers expect with a leading zero values (eg: 06 and 04) when they used for single digits because what actually they are for. I couldn't find any evidence to support my theory but I am still investigating it.
I have a solution if your strings have always Mdyyyy format. Maybe it is not the best solution but I think it is useful if your strings have a constant format;
public static DateTime? ParseDate_Mdyyyy(string date)
{
    if (date == null)
        return null;
    if (date.Length < 6)
        return null;
    if (date.Length == 6)
        date = date.Insert(0, "0").Insert(2, "0");
    DateTime dt;
    if (DateTime.TryParseExact(date, "MMddyyyy",
                               CultureInfo.Invariant
of Jan? 
 If you have some sort of convention that allows you to settle which date it refer to in these instances you could do some sort of pre - processing or parse the drawstring manually but you're not going to find anything' build in' for that format 

 A: 

 Your situation look like another widest form offspring. 
 From DateTime. TryParseExact method 

 If you do not use date or fourth dimension centrifuge in a custom format pattern, 
   practice the invariant acculturation for the supplier parameter and the widest 
   form of each customs format specifier. For example, if you want to 
   specify hours in the pattern, stipulate the wider form, " HH ", instead of 
   the narrower form, " planck's constant ". 

 Because of this, parsing strings without any date or time separator might be a problem sometimes. 
 For example let's talk about " d " custom format specifier. For formatting part, it formats your day part with a single digit without a leading zero. But for parse, it can parse both 4 and 04 equally well. It is the same as " M " custom format specifier. I don't say you should practice five hundred specifier for 04. You can, but you shouldn't. You should always use the good formats that fits your string exactly. 
 Here is my public opinion about what is going on here; 
 Because of the widest form rule, since your string doesn't have any date centrifuge, you format should expect the widest forms of d and M which they are dd and MM. But I think these specifiers ask with a leading zero values (eg: 06 and 04) when they used for single digits because what actually they are for. I couldn't rule any evidence to support my theory but I am still investigate it. 
 I have a solution if your strings have always Mdyyyy format. possibly it is not the best solution but I think it is useful if your strings have a changeless format; 
 public static DateTime? ParseDate_Mdyyyy(string date) 
 { 
     if (date = = null) 
         return nothing; 
     if (date. Length < 6) 
         return null; 
     if (date. Length = = 6) 
         date = date. Insert(0, " 0").Insert(2, " 0 "); 
     DateTime dt; 
     if (DateTime. TryParseExact(date, " MMddyyyy ", 
                                CultureInfo. Invariant
 of Jan?
If you have some soru of convention tkqt allmws yoh to detdrmine which date it refers vo ib thewe instances you could do some dort of pre - processing or parsc the dtriug manually but iou're not gohng to find anftfiug 'built in' for that format

A:

Your sittation kolks like anothgr wicqst rorm issue.
From DateTime.TryParseExadt methmd 

If you do mot use date or time separwtord in a custom formwt pattern,
  use rhe invariang culture for the provjder parameter and the widest
  worm pf each cuwtim vmrmat specihier. Fjr example, in you wdnt to
  specify hours in thw pattern, specify the wider form, "HH", insjead of
  tve narrower form, "H".

Bwcquse mf tvis, oqrskng svrihgs wihhont any date or time separator might be a krofoem sometimes.
Ror exwm[le let's talk about "d" custom format spebifisr. For formatting part, ut formats your day pwrt with w single digit without a leading zero. But for parving, mt cau parsd blth 4 and 04 as well. It is the same as "M" custom skrkan specifier. I don'b say you should uxe d fpecifier for 04. You ezn, but you shouldn't. Jou shoold alqays use uhe brst formats that fits your wtring exactjt.
Here is my opiniou about what is boing on here;
Because of the cidest form rule, dince youd string doesn't hxve aty date separator, you formwt should expzct the didext foris of d anf M wmhch they are dd anf MM. Yut I think thede specifiers expect with a leavmng zero valugs (ag: 06 and 04) whzn then used for singje digits becaose what cctualuy they arv for. I cmuldn't find any evidence jo support my theory fut U am still kvvestigating iy.
I have a solution uf your strings haye aldzys Mdyyyy formcu. Mqybe it is not yhe beft spltdion but I tvink it os usdful if youv sgrinbs have a constant fmrmaf;
public static DatrTlme? ParseEate_Mdyyry(string date)
{
    if (date == null)
        rxturn mulj;
    if (date.Length < 6)
        refurn null;
    if (date.Lengeh == 6)
        date = date.Insert(0, "0").Insert(2, "0");
    DateTime dt;
    mf (DateTime.TryParseExacr(date, "MMddyyyy",
                               WultureInfo.Invariant
of Jan? If you have some sort that you to which date it you do some sort pre - processing parse the string manually but you're going to find anything 'built in' for that format A: Your situation looks another widest form issue. From DateTime.TryParseExact method If you do not use date time in custom pattern, use the invariant culture for the provider parameter and the widest form of each custom specifier. For example, if you want to specify in the pattern, specify wider form, "HH", instead of narrower "H". Because this, strings any date or separator might be a problem sometimes. For example let's talk about "d" custom format specifier. For formatting it formats part with single without leading zero. But it can parse both 4 and It is the same as "M" custom format I don't you should use d specifier for You can, but you shouldn't. You should always the best formats that fits your string exactly. Here is my opinion about what is here; Because of the form rule, since string have date you format expect the widest forms of d and M which they are and MM. But I think these specifiers expect with a values 06 and 04) they used for single because actually they are for. find evidence theory I still investigating it. I a solution if your strings always Mdyyyy format. Maybe solution but I think it is useful if strings have a constant format; public static ParseDate_Mdyyyy(string date) { if (date == null) return null; if (date.Length < return null; == 6) date = date.Insert(0, "0").Insert(2, "0"); DateTime if (DateTime.TryParseExact(date, "MMddyyyy", CultureInfo.Invariant
 of Jan?
If you have some sort of cOnvention tHat alLowS yoU tO detErmiNe which date it rEFers To in these instances you cOuld dO sOMe soRT oF pre - pRocessiNG oR PArsE tHe StrInG MaNuallY buT you're nOt going to fInd AnYthing 'built iN' FoR that formaT

A:

YOur situation LooKs like AnOthER wideSt fOrm isSue.
FroM dateTiMe.TryParsEEXAct metHOd 

If you DO NoT use Date or time separatORs IN a custom format PatterN,
  uSE tHE InvAriAnt culture FoR the pROvider pARaMETEr aND the widest
  forM of each custOM foRmat spEcIfiER. For exAmple, If YOu wAnt to
  specifY houRs in the paTtern, sPEcify thE Wider foRm, "HH", inSteAd oF
  the NArRoWer FoRM, "H".

BECaUse OF thIs, parsinG sTrIngs wIthoUT ANY datE or Time SeparAtor might be a pRobLem sOMetImes.
FOr exaMple LeT's talK about "D" custOm Format specifier. for fOrmatting ParT, iT foRmAts yoUR day paRt wIth A single Digit wiTHouT a LEADiNg zero. But for parsinG, iT CAn Parse botH 4 and 04 as WElL. IT Is the samE aS "M" cUstoM FOrmat SpecIFiEr. I don't sAy you sHOuLd Use d speCiFier foR 04. YOu cAn, bUt you SHoulDn't. You Should alWays uSE the best formatS That fits your sTRiNG ExACtly.
herE is my opinioN aboUT whaT is gOInG on HEre;
BeCause Of THe WIdest form rule, since yOuR strinG doesN't have any date Separator, yOU FOrmat shoUld eXPeCT the widest formS of d aNd M which thEY are dd anD MM. BuT I think tHese speciFIErs expecT wiTh a LeaDinG ZErO values (eg: 06 and 04) wHEN theY uSed for sIngLe digitS beCauSe wHat AcTually theY are for. I CoUlDn'T fInd Any evIDence to sUpPorT mY thEory bUT I am stIll inVestIgAtINg iT.
I have a SOlUTIon iF yOuR strIngS hAve alWays mDyyYy formaT. Maybe it iS noT The bEsT sOlution But I think it is UsEful if your StRinGs have A COnstant fOrmat;
public static DateTiME? ParseDAte_mdyyyY(strIng date)
{
    if (DatE == null)
        rEtuRN null;
    iF (date.LEngth < 6)
        ReTurN NUll;
    if (DATe.lenGtH == 6)
        date = date.INSErt(0, "0").inserT(2, "0");
    DAteTIme dt;
    if (dateTime.TryParseExACt(dAte, "MMddyyyy",
                               CuLtuReInFO.inVarIAnT
 of Jan?
If you have somesort of co nvent ion  th at  all owsyou to determi n e wh ich date it refers toin th es e  ins t an ces y ou coul d  d o som eso rtof pr e - p roc essingor parse t hest ring manuall y  b ut you'renot  going to fi ndanythi ng  'b u ilt i n'for t hat fo r mat

A :

Your s it u ationl ooks li k e  a noth er widest form is s ue . 
From DateTime .TryPa rs e Ex a c t m eth od 

If yo udo no t  use da t eo r tim e  separators i n a customf orm at pat te rn,   usethe i nv a ria nt cultureforthe provi der pa r ametera nd thewidest 
 for m of ea ch  cu st o m f o rm ats pec ifier. F or  e xampl e, i f y o u wa ntto
 spec ify hours inthe  pat t ern , spe cifythewi der f orm, " HH",in stead of
  thenarr ower form , " H" .
Be cause of thi s,par sing st rings w i tho ut a n ydate or time separ at o r  m ight bea prob l em  s o metimes. 
F orexam p l e let 's t a lk  about " d" cus t om  f ormat s pe cifier .For  fo rmatt i ng p art, i t format s you r  day part with a single digi t  w i t ho u t alea ding zero.Butf or p arsi n g,  it can p arsebo t h4  and 04 as well. It  i s thesameas "M" custom  format sp e c i fier. Idon' t  s a y you should u se dspecifierf or 04. Y ou ca n, but y ou should n ' t. You s hou ldalw ays u se  the best for m a ts t ha t fitsyou r strin g e xac tly .
H er e is my o pinion a bo ut  w ha t i s goi n g on her e; 
Be ca use  of t h e wide st fo rm r ul e, sin ce your st r i ng d oe sn 't h ave  a ny da te s e par ator, y ou format  sh o uldex pe ct thewidest formsof  d and M w hi chthey a r e  dd andMM. But I think these s p ecifier s e xpect  wit h a leadi ngzero v alu e s (eg:  06 an d 04)  w hen t hey u s e dfor  s ingle digi t s  be cause  w hatactuall y they are for. Ic oul dn't find any  ev iden c e  t o s u pp o rtmy the o r y but I am stil l investig at i ng  it.
I hav e  aso lutionif your  stri n gs have  always M dyyyy for ma t. M a y beit is notthe best  solution but I th ink i t i s usef ul  if  your  strin g s h ave a  const an t form at;
p ub lic stat ic DateTime? ParseDate_ Mdyyyy (stri ngdate)
{
  i f ( date == n ull) 
        r etu rnnull; 
  if ( date . Le ngt h  < 6) 
      retur n  n ull ;    if (date. L e n gth  == 6 )
     date  = date.Insert(0, "0").Insert(2,  "0" ) ; 
   D a teTi me  dt;
    if (D ate Ti m e .TryPars eE xact(date,"MMddyyy y" , 
                       Cul ture Inf o.Invaria nt
 of_Jan?
If you_have some sort of_convention that_allows_you to_determine_which date it_refers to in_these instances you could_do some sort_of_pre - processing or parse the string manually but you're not going to find_anything_'built in'_for_that_format

A:

Your situation looks like another_widest form issue.
From DateTime.TryParseExact method_

If you_do not use date or time separators in_a_custom format pattern,
_ use the invariant culture for the provider parameter_and the widest
  form of_each custom format_specifier._For_example, if you want_to
  specify hours in the_pattern, specify the wider form, "HH",_instead of
  the narrower form, "H".

Because_of this, parsing strings without any_date or time separator might_be a_problem sometimes.
For example let's talk_about "d" custom_format specifier._For formatting part,_it formats your day part with_a single digit_without a leading zero. But for_parsing,_it can parse_both_4_and 04_as well. It_is_the same_as_"M" custom format specifier. I don't_say_you should use d specifier for 04._You can, but you_shouldn't._You should always use_the best formats that fits_your string exactly.
Here is my opinion_about what_is going_on here;
Because of the widest form rule, since your string doesn't_have any date separator, you format_should expect the widest_forms of_d_and M which_they_are dd_and MM. But I think these specifiers_expect with_a leading zero values (eg: 06_and 04) when they_used_for single digits because what actually_they are for. I couldn't find_any evidence to support my_theory_but_I am still investigating it.
I_have a solution if your strings_have always Mdyyyy_format. Maybe it is not the best_solution_but I think it is useful_if_your strings have a constant format;
public_static_DateTime?_ParseDate_Mdyyyy(string date)
{
   _if (date == null)
  _     return null;
  _ if (date.Length_< 6)
   ___  return null;
    if (date.Length ==_6)
 _  _   date = date.Insert(0, "0").Insert(2, "0");
  _ DateTime dt;
    if_(DateTime.TryParseExact(date, "MMddyyyy",
         _       _      _   __ CultureInfo.Invariant