2013-05-16 19 views
16

Tôi có một datepicker trả về một chuỗi ngày và một số timepicker chỉ trả về một chuỗi thời gian.Kết hợp chuỗi ngày và giờ vào một ngày với javascript

Tôi nên kết hợp những thứ đó vào một Ngày javascript đơn lẻ như thế nào?

Tôi nghĩ tôi đã tìm thấy giải pháp trong Date.js. Các ví dụ cho thấy một -method at(), nhưng tôi không thể tìm thấy nó trong thư viện ...

+0

bạn có thể thêm đoạn mã nhỏ hoặc jsfiddle hiển thị ví dụ với giá trị thực tế và dự kiến ​​không? – theshadowmonkey

+0

Nếu bạn làm theo liên kết đến datepicker và timepicker, có các mẫu làm việc thực tế của cả hai. – Vegar

Trả lời

20

Bạn có thể cấu hình chọn ngày của bạn để trở định dạng như YYYY-mm-dd (hoặc bất kỳ định dạng mà Date.parse hỗ trợ) và bạn có thể xây dựng một chuỗi trong timepicker như:

var dateStringFromDP = '2013-05-16'; 

$('#timepicker').timepicker().on('changeTime.timepicker', function(e) { 
    var timeString = e.time.hour + ':' + e.time.minute + ':00'; 
    var dateObj = new Date(datestringFromDP + ' ' + timeString); 
    }); 

javascript Date đối tượng mất một chuỗi như constructor parma

+0

Ngay cả khi tôi đặt định dạng cho datepicker (như 'data-date-format =" dd. MM yyyy "') giá trị được đặt thành phạm vi là ngày, không phải chuỗi. Tôi quản lý để có được những gì tôi muốn với mã sau đây: 'Date.parse ($ scope.date.toString (" dd.MM.yyyy ") +" "+ $ scope.fromTime);' – Vegar

4

Kết hợp ngày và thời gian để chuỗi như thế này:

1997-07-16T19:20:15 

Và Date.js có thể phân tích nó:

Date.parse('1997-07-16T19:20:15'); 

Bạn cũng có thể sử dụng moment.js hoặc thứ gì đó tương tự hoặc sử dụng vanilla JS.

+2

moment.js là phao cứu sinh – illiptic

2

Đối với đồng bằng JavaScript:

combineDateAndTime = function(date, time) { 
    timeString = time.getHours() + ':' + time.getMinutes() + ':00'; 

    var year = date.getFullYear(); 
    var month = date.getMonth() + 1; // Jan is 0, dec is 11 
    var day = date.getDate(); 
    var dateString = '' + year + '-' + month + '-' + day; 
    var combined = new Date(dateString + ' ' + timeString); 

    return combined; 
}; 
0

dụ của David với mo nhẹ difications:

function CombineDateAndTime(date, time) { 
    var timeString = time.getHours() + ':' + time.getMinutes() + ':00'; 
    var ampm = time.getHours() >= 12 ? 'PM' : 'AM'; 
    var year = date.getFullYear(); 
    var month = date.getMonth() + 1; // Jan is 0, dec is 11 
    var day = date.getDate(); 
    var dateString = '' + year + '-' + month + '-' + day; 
    var datec = dateString + 'T' + timeString; 
    var combined = new Date(datec); 

    return combined; 
}; 
Các vấn đề liên quan