<!DOCTYPE html>
<html ng-app="prueba">

  <head>
    <link data-require="bootstrap-css@*" data-semver="3.0.0" rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" />
    <link data-require="bootstrap@3.0.0" data-semver="3.0.0" rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" />
    <script data-require="bootstrap@3.0.0" data-semver="3.0.0" src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
    <script data-require="angular.js@1.0.8" data-semver="1.0.8" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
    <script data-require="moment.js@2.1.0" data-semver="2.1.0" src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.1.0/moment.min.js"></script>
    <script data-require="jquery@*" data-semver="2.0.3" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
    <script data-require="jqueryui@1.9.2" data-semver="1.9.2" src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body ng-controller="MainCtrl">
    <table class="table table-striped  table-bordered">
      <thead>
        <tr>
          <th>Formato</th>
          <th>Resultado con AngularJS</th>
          <th>Resultado con datejs</th>
          <th>Resultado con moment.js</th>
        </tr>
      </thead>
      <tbody>
        <tr ng-repeat="formato in formatos">
          <td ng-class="{'safe': formato.validoAngular}">{{formato.name}}</td>
          <td>{{formato.angular}}</td>
          <td ng-class="{'safe': formato.compatibleDatejs}">{{formato.datejs}}</td>
          <td ng-class="{'safe': formato.compatibleMoment}">{{formato.moment}}</td>
        </tr>
      </tbody>
    </table>
  </body>

</html>
var app=angular.module("prueba",[]);

app.controller("MainCtrl",function($scope,$filter) {
  var d=new Date(2009, 3, 5, 8, 9, 9, 234);
  var m=moment(d);
  $scope.formatos=[];
  

  
  $scope.cal=function(format) {
    var formato={};
    
    formato.name=format;
    formato.angular=$filter('date')(d,format);
    formato.moment=m.format(format);
    formato.datejs=d.toString(format);
    formato.validoAngular=(formato.angular!=formato.name);
    formato.compatibleDatejs=(formato.angular===formato.datejs);
    formato.compatibleMoment=(formato.angular===formato.moment);
    
    
    if (formato.angular===formato.name) {
      formato.angular="";
    }
    if (formato.moment===formato.name) {
      formato.moment="";
    }
    if (formato.datejs===formato.name) {
      formato.datejs="";
    }    
    
    $scope.formatos.push(formato);
    
  }

  $scope.cal('YYYY');
  $scope.cal('yyyy');
  $scope.cal('YY');
  $scope.cal('yy');
  $scope.cal('MMMM');
  $scope.cal('MMM');
  $scope.cal('MM');
  $scope.cal('M');
  $scope.cal('DDDD');
  $scope.cal('dddd');
  $scope.cal('DDD');
  $scope.cal('ddd');  
  $scope.cal('DD');
  $scope.cal('dd');
  $scope.cal('D');
  $scope.cal('d');
  $scope.cal('EEEE');
  $scope.cal('eeee');
  $scope.cal('EEE');
  $scope.cal('eee');
  $scope.cal('E');  
  $scope.cal('e');  
  $scope.cal('HH');
  $scope.cal('hh');
  $scope.cal('H');
  $scope.cal('h');
  $scope.cal('mmmm');
  $scope.cal('mmm');
  $scope.cal('mm');
  $scope.cal('m');
  $scope.cal('SSS');
  $scope.cal('sss');   
  $scope.cal('SS');
  $scope.cal('ss');  
  $scope.cal('S');
  $scope.cal('s'); 
  $scope.cal('.SSS');
  $scope.cal('.sss'); 
  $scope.cal(',SSS');
  $scope.cal(',sss');
  $scope.cal('A');
  $scope.cal('a');   
  $scope.cal('Z');
  $scope.cal('z'); 
  $scope.cal('ZZ');
  $scope.cal('zz');    
})

/* Styles go here */

.safe {
  font-weight:bold;
}
# Parseando una fecha compatible con el formato AngularJS
AngularJS nos permite formatear un "date" usando el filtro "date".
Pero, ¿que hay si queremos parsear una fecha?¿Que librería usaríamos?

He puesto una comparativa del formato de fecha de AngularJS contra el de date.js y moment.js

Aparece en negrita cuando moment.js o date.js son compatible con AngularJS.

Visto el resultado, la mayor compatibilidad con AngularJS es de datejs.

Pero el mayor problema que veo es usar los formatos cortos de fecha cortos como "short" o "shortDate" que es ese caso en cada librería son totalmente distintas. 
Aunque por otro lado , al ser simplemente una palabra sería muy sencillo hacer una "traducción" de un formato a otro.