Edit in JSFiddle

 (function ($, moment) {
     var
     randomDate = function (start, end) {
         return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
     },
     sortByDateAsc = function (lhs, rhs) {
         return lhs > rhs ? 1 : lhs < rhs ? -1 : 0;
     },
     sortByDateDesc = function (lhs, rhs) {
         return lhs < rhs ? 1 : lhs > rhs ? -1 : 0;
     },
     sortByTimeAsc = function (lhs, rhs) {
         var results;

         results = lhs.hours() > rhs.hours() ? 1 : lhs.hours() < rhs.hours() ? -1 : 0;

         if (results === 0) results = lhs.minutes() > rhs.minutes() ? 1 : lhs.minutes() < rhs.minutes() ? -1 : 0;

         if (results === 0) results = lhs.seconds() > rhs.seconds() ? 1 : lhs.seconds() < rhs.seconds() ? -1 : 0;

         return results;
     },
     sortByTimeDesc = function (lhs, rhs) {
         var results;
         
         results = lhs.hours() < rhs.hours() ? 1 : lhs.hours() > rhs.hours() ? -1 : 0;

         if (results === 0) results = lhs.minutes() < rhs.minutes() ? 1 : lhs.minutes() > rhs.minutes() ? -1 : 0;

         if (results === 0) results = lhs.seconds() < rhs.seconds() ? 1 : lhs.seconds() > rhs.seconds() ? -1 : 0;

         return results;
     },
     sortByDateDescAndTimeAsc = function (lhs, rhs) {
         var results;

         results = lhs.years() < rhs.years() ? 1 : lhs.years() > rhs.years() ? -1 : 0;

         if (results === 0) results = lhs.months() < rhs.months() ? 1 : lhs.months() > rhs.months() ? -1 : 0;

         if (results === 0) results = lhs.date() < rhs.date() ? 1 : lhs.date() > rhs.date() ? -1 : 0;

         if (results === 0) results = lhs.hours() > rhs.hours() ? 1 : lhs.hours() < rhs.hours() ? -1 : 0;

         if (results === 0) results = lhs.minutes() > rhs.minutes() ? 1 : lhs.minutes() < rhs.minutes() ? -1 : 0;

         if (results === 0) results = lhs.seconds() > rhs.seconds() ? 1 : lhs.seconds() < rhs.seconds() ? -1 : 0;

         return results;
     },
     sortByDateDescAndTimeAscDateObj = function (lhs, rhs) {
         var results;

         results = lhs.getYear() < rhs.getYear() ? 1 : lhs.getYear() > rhs.getYear() ? -1 : 0;

         if (results === 0) results = lhs.getMonth() < rhs.getMonth() ? 1 : lhs.getMonth() > rhs.getMonth() ? -1 : 0;

         if (results === 0) results = lhs.getDate() < rhs.getDate() ? 1 : lhs.getDate() > rhs.getDate() ? -1 : 0;

         if (results === 0) results = lhs.getHours() > rhs.getHours() ? 1 : lhs.getHours() < rhs.getHours() ? -1 : 0;

         if (results === 0) results = lhs.getMinutes() > rhs.getMinutes() ? 1 : lhs.getMinutes() < rhs.getMinutes() ? -1 : 0;

         if (results === 0) results = lhs.getSeconds() > rhs.getSeconds() ? 1 : lhs.getSeconds() < rhs.getSeconds() ? -1 : 0;

         return results;
     },
     datesToSort = ["2013-07-11 17:16:59.000", "2013-07-12 16:52:07.000", "2013-06-29 08:39:05.000", "2013-07-19 22:29:31.407", "2013-07-19 22:29:30.407", "2013-06-29 08:40:36.000", "2013-07-04 23:29:30.000", "2013-07-19 22:28:30.000"],
     momentDates = [],
     dates = [];

     for (var i in datesToSort) {
         momentDates.push(moment(datesToSort[i]));
         dates.push(new Date(momentDates[i]));
     }

     for (i in momentDates) {
         $('#unsortedDates').append(momentDates[i].format() + "<br />");
     }

     momentDates.sort(sortByDateAsc);

     for (i in momentDates) {
         $('#sortedDateAsc').append(momentDates[i].format() + "<br />");
     }

     momentDates.sort(sortByDateDesc);

     for (i in momentDates) {
         $('#sortedDateDesc').append(momentDates[i].format() + "<br />");
     }

     momentDates.sort(sortByTimeAsc);

     for (i in momentDates) {
         $('#sortedTime').append(momentDates[i].format() + "<br />");
     }

     momentDates.sort(sortByTimeDesc);

     for (i in momentDates) {
         $('#sortedTimeDesc').append(momentDates[i].format() + "<br />");
     }

     momentDates.sort(sortByDateDescAndTimeAsc);

     for (i in momentDates) {
         $('#sortedDateDescTimeAsc').append(momentDates[i].format() + "<br />");
     }

     //Generate a Thousand Dates and Sort them
     momentDates = [];
     for (i = 0; i < 1000; i++) {
         momentDates.push(moment(randomDate(new Date(2013, 0, 1), new Date())));
     }

     momentDates.sort(sortByDateDescAndTimeAsc);

     for (i in momentDates) {
         $('#sortedDateDescTimeAscRandom').append(momentDates[i].format() + "<br />");
     }

     //JavaScript Date object version
     dates.sort(sortByDateDescAndTimeAscDateObj);

     for (i in dates) {
         $('#sortedDateDescTimeAscDate').append(dates[i] + "<br />");
     }

 }($, moment));
<h2>How To Sort Date and Time in JavaScript utilizing Moment.Js</h2>

<div id="unsortedDates">
     <h3>Unsorted Test Dates</h3>

</div>
<div id="sortedDateAsc">
     <h3>Sorted Date Asc</h3>

</div>
<div id="sortedDateDesc">
     <h3>Sorted Date Desc</h3>

</div>
<div id="sortedTime">
     <h3>Sorted Time Asc</h3>

</div>
<div id="sortedTimeDesc">
     <h3>Sorted Time Desc</h3>

</div>
<div id="sortedDateDescTimeAsc">
     <h3>Sorted Date Desc Time Asc</h3>

</div>
<div id="sortedDateDescTimeAscRandom">
     <h3>Sorted Randomly Generated Dates Desc Time Asc</h3>

</div>
<div id="sortedDateDescTimeAscDate">
     <h3>Sorted Date Desc Time Asc Date Object</h3>

</div>