2013-05-16 14 views
16

Mam datepicker zwracając ciąg daty, a timepicker zwraca tylko ciąg czasu.Połączyć ciąg daty i godziny w jedną datę z javascript

Jak powinienem je połączyć w pojedynczy javascript Date?

Pomyślałem, że znalazłem rozwiązanie w Date.js. Przykłady przedstawiono at() -method, ale nie mogę go znaleźć w bibliotece ...

+0

czy możesz dodać mały fragment kodu lub jsfiddle, który pokazuje przykład z rzeczywistymi i oczekiwanymi wartościami? – theshadowmonkey

+0

Po kliknięciu łącza do datepaksu i timepicker, istnieją rzeczywiste próbki robocze obu. – Vegar

Odpowiedz

20

można skonfigurować wyboru daty do formatu jak YYYY-mm-dd (lub dowolny format, który Date.parse podpory) powrotu i można zbudować ciąg w timepicker jak:

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 obiekt pobiera ciąg jako konstruktora Parma

+0

Nawet jeśli ustawię format dla datepika (np. 'Data-date-format =" dd. MM rrrr "'), wartością ustawioną dla zakresu jest data, a nie ciąg znaków. Udało mi się uzyskać to, co chciałem, za pomocą następującego kodu: 'Date.parse ($ scope.date.toString (" dd.MM.yyyy ") +" "+ $ scope.fromTime);' – Vegar

4

Kombajny datę i czas na ciąg tak:

1997-07-16T19:20:15 

I Date.js można go analizować:

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

Można również użyć moment.js lub czegoś podobnego lub użyć wanilii JS.

+2

moment.js to ratownik życia – illiptic

2

Dla zwykłego 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

przykład Dawida z lekkim MO różnice:

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; 
}; 
Powiązane problemy