Разделить на "-"
Разобрать строку на нужные вам части:
var from = $("#datepicker").val().split("-")
var f = new Date(from[2], from[1] - 1, from[0])
Используйте регулярное выражение
var date = new Date("15-05-2018".replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3"))
Почему бы не использовать регулярные выражения?
Поскольку вы знаете, что будете работать над строкой, состоящей из трех частей, разделенных дефисами.
Однако, если вы искали эту же строку в другой строке, регулярное выражение было бы правильным способом.
Повторное использование
Поскольку вы делаете это более одного раза в своем примере кода, и, возможно, где-то еще в вашей кодовой базе, заключите его в функцию:
function toDate(dateStr) {
var parts = dateStr.split("-")
return new Date(parts[2], parts[1] - 1, parts[0])
}
Использование как:
var from = $("#datepicker").val()
var to = $("#datepickertwo").val()
var f = toDate(from)
var t = toDate(to)
Или, если вы не возражаете против jQuery в вашей функции:
function toDate(selector) {
var from = $(selector).val().split("-")
return new Date(from[2], from[1] - 1, from[0])
}
Использование как:
var f = toDate("#datepicker")
var t = toDate("#datepickertwo")
Современный JavaScript
Если вы можете использовать более современный JS, деструктуризация массива также очень приятна:
function toDate(dateStr) {
const [day, month, year] = dateStr.split("-")
return new Date(year, month - 1, day)
}