Angular.js internally uses createDateInputType to handle date and time specific input elements with ngModel binding.
In this createDateParser is used to parse date/times.
for example:
definition of the input[date]:
'date': createDateInputType('date', DATE_REGEXP,
    createDateParser(DATE_REGEXP, ['yyyy', 'MM', 'dd']),
    'yyyy-MM-dd'),
definition of the input[time]:
'time': createDateInputType('time', TIME_REGEXP,
    createDateParser(TIME_REGEXP, ['HH', 'mm', 'ss', 'sss']),
   'HH:mm:ss.sss'),
basically it would be possible to change the used date and time formating in the source. but there is no api/option to specify other formats. (i think that would be a good fit for ngModelOptions)
now i just want to extend on the original behavior with an directive and add a parser / formatter that uses a user specified format string. For this i need similar functionality like the createDateParser - so is it possible to use these internal function in a directive?
alternative solution would be to include moment.js as parsing/formatting library.
i have setup a Plunker to demonstrate this - using moment.js - but it would be better to not have to include a external lib if the functionality is somewhere in the core... (the directive only gets active if the browser does not natively support date or time)
iam just adding a parser and a formatter at the first position with array.unshift() so for the formatters it will be called last. For the parser it will be called first.
The formatter just converts the angular/iso formatted string back to a date-object and formats it according the user-given formatString.
ctrl.$formatters.unshift(function(value) {
    if (value) {
        var tempDate = moment(value, format_internal);
        var intDateFormatedString = tempDate.format(scope.formatString);
        return intDateFormatedString;
    }
});
The Parser works the same only in the other direction and with some validating.
ctrl.$parsers.unshift(function(viewValue) {
    var resultString;
    if (viewValue) {
        // momentjs with strict parsing
        var tempDate = moment(viewValue, scope.formatString, true);
        if ( tempDate.isValid() ) {
            ctrl.$setValidity("userInput", true);
             // return as string with internal angular expected format
            resultString = tempDate.format(format_internal);
        }
    }
    return resultString;
});
only partly related:
How to manually rerun formatter chain in angularjs directive with ngModel?
hopefully the style of the 'question' is ok - iam not sure if i have found the right focus.. eventually it would be better to split it up somehow?