docs: function createDateTimeFormatter( type, inputFormat ) {
     return ( options, value ) => {
        if( value == null ) {
           return '';
        }
  
        if( value instanceof Date ) {
           return format( moment( value ) );
        }
  
        if( typeof value !== 'string' ) {
           throw argumentError( value );
        }
  
        const useInputFormat = value.length < ISO_FULL_FORMAT_MIN_LENGTH;
        const momentTime = value.toLowerCase() === 'now' ?
           moment() :
           moment( value, useInputFormat ? inputFormat : undefined, useInputFormat || undefined );
  
        if( !momentTime.isValid() ) {
           throw argumentError( value );
        }
  
        return format( momentTime );
  
        ////////////////////////////////////////////////////////////////////////////////////////////////////////
  
        function format( momentTime ) {
           return momentTime.format( options[ `${type}Format` ] );
        }
  
        function argumentError( value ) {
           return new TypeError(
              'Expected argument to be a Date object, the string "NOW", or an ISO-8601 string ' +
              `(full, or ${type} as ${inputFormat}), but got "${typeof value}". Value: ${value}`
           );
        }
     };
  }