2016-07-21 18 views
0

ich die jQueryUI Datepicker Bibliothek bin mit und ich brauche es mit einem Datum zu liefern, die dynamisch für das min Datum geladen wird.ein Javascript-Datum aus einer Zeichenfolge ohne Zeitzone (für jQueryUI picker)

ich meine picker up:

$("#thePicker").datepicker({ 
      dateFormat: 'yy-mm-dd', 
      showOtherMonths: true, 
      changeMonth: true, 
      changeYear: true, 
      minDate: new Date('2016-04-28'), 
     }); 

Wo ‚2016.04.28‘ ist eine Zeichenfolge, die bei Belastung variieren.

Dies allerdings setzt den minimal zulässigen Zeitpunkt bis zum 27. April 2016 aufgrund einer Zeitzone-Konvertierung.

Wie soll ich das neue Datum für die minDate konstruieren, wenn ich eine Zeichenfolge des Formats habe oben geliefert gezeigt, so dass keine Zeitzone ist relevant?

Antwort

1

Wenn das Datum ein String ist und so etwas wie dies immer "YYYY-MM-DD", die ich tun würde:

https://fiddle.jshell.net/Twisty/eknxxqvh/

$(function() { 
    var dString = "2016-04-28"; 
    var yy = parseInt(dString.substring(0, 4)); 
    var mm = parseInt(dString.substring(5, 7)) - 1; 
    var dd = parseInt(dString.substring(8)); 
    $("#thePicker").datepicker({ 
    dateFormat: 'yy-mm-dd', 
    showOtherMonths: true, 
    changeMonth: true, 
    changeYear: true, 
    minDate: makeDate("2016-04-28"), 
    /* Alternate Method 1 
    minDate: new Date(yy, mm, dd), 
    /* Alternate Method 2 
    minDate: new Date(parseInt("2016-04-28".substring(0,4)), parseInt("2016-04-28".substring(5,7))-1, parseInt("2016-04-28".substring(8))), 
    */ 
    }); 

    function makeDate(ds) { 
    var yy = parseInt(ds.substring(0, 4)); 
    var mm = parseInt(ds.substring(5, 7)) - 1; 
    var dd = parseInt(ds.substring(8)); 
    var d = new Date(yy, mm, dd); 
    return d; 
    } 
}); 

Je nachdem, wie oft Sie diese in verwenden, um Ihr Seite wird definieren, welche Methode für Sie am besten funktioniert.

+0

Ah großartig, danke. Benutzte die makeDate Funktion in meinem normalen Javascript, da dies in der App geschieht. Ich schätze, dass der Konstruktor Date, der eine Zeichenkette akzeptiert, die Zeitzone ableitet. – Luke

+1

Ja, es wird die lokale Zeitzone des Benutzers angenommen und wenn Sie diese kleine Information übergeben, kann es einige seltsame Annahmen machen. – Twisty