Obtenha os meses entre duas datas

Crie uma função que, dadas 2 datas, retorne os nomes dos meses presentes entre elas (inclusive).

Exemplos

Entrada

var january = new Date(2017, 0, 1);
var march = new Date(2017, 2, 1);

monthsInterval(january, march)

Saída

['January', 'February', 'March']

Entrada

var december = new Date(2017, 11, 1);
var january = new Date(2018, 0, 1);

monthsInterval(december, january)

Saída

['January', 'December']

Entrada

var january2017 = new Date(2017, 0, 1);
var january2018 = new Date(2018, 0, 1);

monthsInterval(january2017, january2018)

Saída

['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']

(Observe que January não é duplicado!)

Observações

  • O array retornado deve incluir os meses de dateStart e dateEnd (inclusive)
  • O array retornado não deve incluir valores duplicados
  • Os nomes dos meses retornados pela função devem estar ordenados (não alfabeticamente, mas de acordo com qual vem primeiro (January = 1.º mês, February = 2.º mês, … , December = 12.º mês))
  • A função deve produzir a mesma saída mesmo que dateStart seja maior que dateEnd