Use the following formula to convert the String to a Date. This will check the value in the StringDateField and only attempt to convert it, if it's valid:

If NOT isNull({StringDateField}) and IsDate({StringDateField})
     then Date({StringDateField})

Use the following formula to convert a String that only has the year value of the date to 01/01/xxxx.

If NOT isNull({StringDateField}) and Length({StringDateField})=4
     then Date(ToNumber({StringDateField}), 01, 01)
else if NOT isNull({StringDateField})
     then Date({StringDateField})