2011-12-07 2 views
19

2 개의 날짜 개체가 있습니다. 한 날짜와 다른 날짜에서 날짜를 가져 와서 새 날짜 개체로 결합하려고합니다.JavaScript로 두 날짜를 병합하는 방법은 무엇입니까?

date.toString() = Wed Dec 21 2011 00:00:00 GMT+0000 (GMT) 
time.toString() = Sun Dec 31 2000 03:00:00 GMT+0000 (GMT) 

# I want to end up with 
datetime.toString() = Wed Dec 21 2011 03:00:00 GMT+0000 (GMT) 

어떻게하면이 작업을 가장 잘 수행 할 수 있습니까?

+2

[this] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date)보다 자세한 정보가 필요합니까? – Jon

답변

36
var datetime = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 
         time.getHours(), time.getMinutes(), time.getSeconds()); 
+9

'getYear'는 더 이상 사용되지 않으므로'getFullYear'로 전환해야합니다. 또한,'getDay'는 요일을 반환하므로'getDate'로 전환해야합니다. –

+0

내가 알기 론이 솔루션은 일광 절약 시간을 고려하지 않습니까? – chmanie

1
var msPerDay = 1000 * 60 * 60 * 24; 
var newDateTime = new Date(date.getTime() + (time.getTime() % msPerDay)); 

편집 : 내 날짜 변수는 언제든지이없는 날짜입니다 가정합니다.

1

이 가장 좋은 경우 나도 몰라,하지만 당신은 다음을 시도 할 수 있습니다 :

datetime = new Date(
    date.getUTCFullYear(), 
    date.getUTCMonth(), 
    date.getUTCDate(), 
    time.getUTCHours(), 
    time.getUTCMinutes(), 
    time.getUTCSeconds() 
); 

Date 객체에 대한 자세한 참고로는 here을 찾습니다. 대상 문자열을 구축 할 문자열 기능을 사용할 수 있습니다

+0

는 나를 위해 작동하지 않았다 - TZ를 부 and고 시간을 엉망으로 만들었다 – Kuf

+0

@Kuf 좀 더 구체적이고 어쩌면 예를 들어 줄 수 있니? 정확히 무엇을 성취하려고합니까? OP가 요구하는 것과 매우 다르다면 자신의 질문을 시작하거나 묻는 것을 고려해야합니다. –

+0

경고로 남겨 두었습니다. 코드에서 로컬 시간을 가져온 다음 UTC로 변환 한 다음 다시 로컬로 저장하면 TZ가 망가집니다. 나는 각 함수 이름에서'UTC'를 생략함으로써 문제를 해결했다. 의미가있는 희망. – Kuf

2

... 다음

datetime = date.toString().substr(0,16) + time.toString().substr(16,40) 

당신이 날짜 개체로 그것을 가지고 어떻게 이런 일에 대해 new date()

5

로 공급해야하는 경우 :

var year = date.getFullYear(), 
    month = date.getMonth(), 
    day = date.getDate(); 

time.setFullYear(year); 
time.setMonth(month); 
time.setDate(day); 
여기
3
var parts = ['Hours', 'Minutes', 'Seconds', 'Milliseconds']; 
for (var i=0, p; p=parts[i], i<parts.length; i++) { 
    date['setUTC'+p](time['getUTC'+p]()); 
} 
1

날짜 및 시간 후 CREAT를 교체 정규 표현식을 사용하는 방법이다 새 Date 객체

dateTime = new Date(date.toString().replace(/(\d\d:){2}\d{2}/,/(\d\d:){2}\d{2}/.exec(time.toString())[0])); 
관련 문제