Tách ra "-"
Phân tích chuỗi thành các phần bạn cần:
var from = $("#datepicker").val().split("-")
var f = new Date(from[2], from[1] - 1, from[0])
Sử dụng regex
var date = new Date("15-05-2018".replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3"))
Tại sao không sử dụng regex?
Bởi vì bạn biết bạn sẽ làm việc trên một chuỗi gồm ba phần, được phân tách bằng dấu gạch nối.
Tuy nhiên, nếu bạn đang tìm kiếm cùng một chuỗi trong một chuỗi khác, regex sẽ là cách tốt nhất.
Tái sử dụng
Bởi vì bạn đang làm điều này nhiều hơn một lần trong mã mẫu của bạn và có thể ở nơi khác trong cơ sở mã của bạn, hãy gói nó trong một hàm:
function toDate(dateStr) {
var parts = dateStr.split("-")
return new Date(parts[2], parts[1] - 1, parts[0])
}
Sử dụng như:
var from = $("#datepicker").val()
var to = $("#datepickertwo").val()
var f = toDate(from)
var t = toDate(to)
Hoặc nếu bạn không nhớ jQuery trong chức năng của mình:
function toDate(selector) {
var from = $(selector).val().split("-")
return new Date(from[2], from[1] - 1, from[0])
}
Sử dụng như:
var f = toDate("#datepicker")
var t = toDate("#datepickertwo")
JavaScript hiện đại
Nếu bạn có thể sử dụng JS hiện đại hơn, thì việc phá hủy mảng cũng là một điểm tuyệt vời:
const toDate = (dateStr) => {
const [day, month, year] = dateStr.split("-")
return new Date(year, month - 1, day)
}