var str = "05/04/2015 23:59";
var tmp = str.split(' ');
var data = tmp[0].split('/');
var data_certa = new Date();
var data_errada = new Date();
data[0] = parseInt(data[0]);
data[1] = parseInt(data[1]);
data[1] = data[1] -1;
data[2] = parseInt(data[2]);
data_certa.setFullYear(data[2]);
data_certa.setDate(data[0]);
data_certa.setMonth(data[1]);//setmonth deve vir depois de setdate
data_errada.setFullYear(data[2]);
data_errada.setMonth(data[1]);
data_errada.setDate(data[0]);
console.log(data_certa); //Sun Apr 05 2015 12:33:04 GMT-0300 (BRT)
console.warn(data_errada); //Tue May 05 2015 12:33:04 GMT-0300 (BRT)
Por algum motivo, setMonth deve ser chamado depois de setDate, senão a data acaba indo parar no mês que vem.
Quem disse que a ordem dos fatores não altera o produto, não programava em javascript.