2016-05-27 4 views
1

Ich habe eine jQuery onclick Funktion, die im Grunde einen Monatsnamen erhält, und von diesem Monat Name, möchte ich eine Monatsspanne erhalten. Wie zum Beispiel einen Monat Namen „Mai“, wie dies vorbei ich:Javascript erhalten Monat Bereich nach Monat Name

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

Nun möchte Ich mag den aktuellen Monat Name für eine JS-Funktion übergeben und Datumsbereich für diesen Monat bekommen.

Also zum Beispiel wäre Mai => 01-05-2016 - 31-05-2016, so weiter und so weiter ... Kann mir jemand dabei helfen?

Antwort

2

Ich würde Moment.js verwenden. Es ist perfekt für die Manipulation von Daten und alle Arten von Dingen.

In Ihrem speziellen Fall:

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

Was für ein viel des Guten - und schlug bereits – mplungjan

+0

Ich erhalte eine Fehlermeldung, wenn ich versuche, vor() Funktion wie diese zu nennen: Reference: Moment nicht definiert ist – perkes456

+0

Sie müssen Moment hinzufügen, um es zu verwenden – mplungjan

6

Sie können es so ohne Dritte Bibliothek tun.

ich Sie davon ausgehen, sind Berechnung für das laufende Jahr

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: Ich habe die Antwort geändert, um einen Monatsnamen als String verwenden

+0

ja gerade bearbeitet die Antwort –

+0

anstelle von yourMonth werde ich die Variable übergeben, die ich bereits habe, die eine Zeichenfolge "Mai" oder "Juni" sein soll? – perkes456

+0

Meine Monatsvariable ist im Grunde ein String-Name wie "Mai" ,,, wenn ich es passiere, bekomme ich einen ungültigen Datumsfehler .... – perkes456

0

Sie diese Funktion nutzen zu können:

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

Sie können Variable MonatName wie verwenden: Jun, Mai, Jul, Sep, Nov, ... mit vollen oder 3 ersten Buchstaben funktioniert auch gut :) –

+0

Polsterung ist auch notwendig – mplungjan

0

Zuerst erstelle ich ein Monatsnamen-Array nach dem getMonth() - Index. Suchen Sie dann den gewünschten Monatsnamen nach indexOf, damit wird Ihr Array-Index zurückgegeben, wenn er gefunden wurde.

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

hinzugefügt So 1 in 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

Du füllst nicht auf – mplungjan