Fractionner sur "-"
Analysez la chaîne dans les parties dont vous avez besoin:
var from = $("#datepicker").val().split("-")
var f = new Date(from[2], from[1] - 1, from[0])
Utiliser regex
var date = new Date("15-05-2018".replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3"))
Pourquoi ne pas utiliser regex?
Parce que vous savez que vous travaillerez sur une chaîne composée de trois parties, séparées par des tirets.
Cependant, si vous recherchiez cette même chaîne dans une autre chaîne, regex serait la voie à suivre.
Réutilisation
Parce que vous faites cela plus d'une fois dans votre exemple de code, et peut-être ailleurs dans votre base de code, enveloppez-le dans une fonction:
function toDate(dateStr) {
var parts = dateStr.split("-")
return new Date(parts[2], parts[1] - 1, parts[0])
}
Utilisation comme:
var from = $("#datepicker").val()
var to = $("#datepickertwo").val()
var f = toDate(from)
var t = toDate(to)
Ou si jQuery ne vous dérange pas dans votre fonction:
function toDate(selector) {
var from = $(selector).val().split("-")
return new Date(from[2], from[1] - 1, from[0])
}
Utilisation comme:
var f = toDate("#datepicker")
var t = toDate("#datepickertwo")
JavaScript moderne
Si vous pouvez utiliser un JS plus moderne, la déstructuration des tableaux est également une bonne idée:
const toDate = (dateStr) => {
const [day, month, year] = dateStr.split("-")
return new Date(year, month - 1, day)
}