2016-05-27 6 views
1

У меня есть функция jQuery onclick, которая в основном получает имя месяца, и с этого месяца мне хотелось бы получить диапазон месяцев. Как, например, я передаю название месяца «Май», как это:Javascript get month range by month name

$('#swiperNext').click(function(e) 
    { 
     var currentMonth = $('.swiper-slide-active h3').html(); 
     console.log(currentMonth); 
    }); 

Теперь я хотел бы передать имя текущего месяца к функции JS и получить диапазон дат для этого месяца.

Так, например, May be was => 01-05-2016 - 31-05-2016, так далее и т. Д. Может ли кто-нибудь помочь мне с этим?

ответ

2

Я бы использовал Moment.js. Он идеально подходит для манипулирования датами и делает всевозможные вещи.

В вашем конкретном случае:

var startOfMonth = moment().month("June").startOf("month").toDate() 
var endOfMonth = moment().month("June").endOf("month").toDate() 
+0

Что излишество - и уже предложил – mplungjan

+0

я получаю сообщение об ошибке при попытке вызвать функцию момента() вроде этого: ReferenceError: момент не определен – perkes456

+0

вы должны указать момент, чтобы использовать его – mplungjan

6

Вы можете сделать это без какой-либо библиотеки третьей стороны, как это.

Я полагаю, вы расчет за текущий год

var date = new Date(); 
var y = date.getFullYear(); 
var month = $('.swiper-slide-active h3').text(); 
var m = new Date(Date.parse(month, 1, " + y)).getMonth(); 

var firstDay = new Date(y, m, 1); 
var lastDay = new Date(y, m + 1, 0); 

EDIT: Я изменил ответ на использование названия месяца в виде строки

+0

да только что отредактировал ответ –

+0

вместо yourMonth Я передам переменную, которую у меня уже есть, которая должна быть строкой «May» или «June»? – perkes456

+0

Моя переменная месяца - это в основном строковое имя типа «Май» ,,, Когда я его передаю, я получаю неверную ошибку даты .... – perkes456

0

Вы можете использовать эту функцию:

function getMonthFromString(monthName){ 
    var date = new Date(Date.parse(monthName + 1, new Date().getFullYear())); 
    var firstDay = new Date(date.getFullYear(), date.getMonth(), 1).getDate(); 
    var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(); 
    var month = new Date(Date.parse(monthName + 1, new Date().getFullYear())).getMonth()+1; 
    var year = new Date().getFullYear(); 

     return firstDay + "-" + month + "-" + year + " - " + lastDay + "-" + month + "-" + year; 
} 
+0

Вы можете использовать переменную monthName как: Jun, May, Jul, Sep, Nov, ... используя полные или 3 первые буквы также отлично работают :) –

+0

Также необходимо заполнить – mplungjan

0

Сначала я создаю массив имен месяца в соответствии с индексом getMonth(). Затем найдите нужное имя месяца indexOf, которое вернет ваш индекс массива при его обнаружении.

Note getMonth() is only return number between 0 and 11 assume Jan to Dec

Так добавил 1 в getMonth

var monthNames = ["January", "February", "March", "April", "May", "June", 
    "July", "August", "September", "October", "November", "December" 
]; 
$('#swiperNext').click(function(e) 
    { 
     var currentMonth = $('.swiper-slide-active h3').html(); 
     var month = monthNames.indexOf(currentMonth); 
     var d = new Date(); 
     var start = new Date(d.getFullYear(),month,1); 
     var end = new Date(d.getFullYear(),month+1,0); 
     var startdate = start.getDate()+"/"+(start.getMonth()+1)+"/"+start.getFullYear(); 
     var enddate = end.getDate()+"/"+(end.getMonth()+1)+"/"+end.getFullYear(); 
    console.log(startdate+"-"+enddate); 
    }); 
+0

Вы не заполняете – mplungjan