Почему javascript Date() работает неверно?
Таково поведение Date в JavaScript. Но заметьте, время он вам показывает правильное, но в вашем текущем часовом поясе.
А вот если бы вам сервер не передавал временную зону, то вам бы выводилось 
Mon Jun 22 2015 09:00:00 GMT+0600
Денис Инешин вам дал самый правильный совет - использовать momentjs, т.к. это своего рода маст-хэв для JS-разработчика для работы с датами, как в плане арифметики (начало месяца, конец недели и прочее), так и в плане форматирования дат с поддержкой локалей.
function formatDate(date) {

  //получаем день
  var dd = date.getDate();
  if (dd < 10) dd = '0' + dd;
  
  //получаем месяц
  var mm = date.getMonth() + 1;
  if (mm < 10) mm = '0' + mm;

  //получаем год
  var yy = date.getFullYear() % 100;
  if (yy < 10) yy = '0' + yy;

  return dd + '.' + mm + '.' + yy;
}

formatDate( new Date() );