Dividido en "-"
Analiza la cuerda en las partes que necesitas:
var from = $("#datepicker").val().split("-")
var f = new Date(from[2], from[1] - 1, from[0])
Usar expresiones regulares
var date = new Date("15-05-2018".replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3"))
¿Por qué no usar regex?
Porque sabes que trabajarás en una cadena compuesta de tres partes, separadas por guiones.
Sin embargo, si estaba buscando esa misma cadena dentro de otra cadena, la expresión regular sería el camino a seguir.
Reutilizar
Debido a que está haciendo esto más de una vez en su código de muestra, y tal vez en otra parte de su base de código, envuélvalo en una función:
function toDate(dateStr) {
var parts = dateStr.split("-")
return new Date(parts[2], parts[1] - 1, parts[0])
}
Utilizando como:
var from = $("#datepicker").val()
var to = $("#datepickertwo").val()
var f = toDate(from)
var t = toDate(to)
O si no te importa jQuery en tu función:
function toDate(selector) {
var from = $(selector).val().split("-")
return new Date(from[2], from[1] - 1, from[0])
}
Utilizando como:
var f = toDate("#datepicker")
var t = toDate("#datepickertwo")
JavaScript moderno
Si puede utilizar JS más modernos, la desestructuración de matrices también es un buen toque:
const toDate = (dateStr) => {
const [day, month, year] = dateStr.split("-")
return new Date(year, month - 1, day)
}