2012-11-17 2 views
3

웹 응용 프로그램에서 Date.js을 사용하고 있습니다. "Mon Oct 8 00:00:00 UTC-0300 2012"에서 하루를 빼면 "oct 6 왜 이런 일이addDay() 함수가 Data.js에서 잘못된 값을 반환합니다.

var startTime = new Date(2012, 9, 8); 
var beforeStare = startTime.clone().addDays(-1); 

enter image description here

: 2009 년 10 월 7 ""대신 "여기

내 코드? 이 문제를 해결하는 방법?

는 또한 내가이 new Date(2012,9,7);

10월 반환 시도 6 세계 협정시 23시 00분 0초-0300 2012

: 나는 Asuncion(UTC-04:00) 시간대

JSFiddler을 사용하고 있습니다

+2

이 http://jsfiddle.net/wDF9m/2/ 잘 작동합니다. clone()이 필요 없습니다. –

+2

문제는 시간대 변경으로 보입니다. 2012 년 8 월 8 일 00:00:00 UTC-0300 - 1 일 *은 기술적으로 2012 년 6 월 6 일 23:00:00 UTC-0400입니다. 문제는 다른 시간대로 작업하고있는 것으로 보입니다. – Corbin

+0

@ 1.44mb가 지정된 시간대에 작동하지 않습니다. –

답변

0

utc make calc로 날짜를 변환합니다. 사용자에게 보여줄 때 현지 표준 시간대로 변환하십시오. 이렇게하면 작업하는 모든 날짜가 같은 표준시인지 확인할 수 있습니다. 현지 시간과 UTC :

// Creating the date "Oct 7 2012" 
var date = new Date(2012, 9, 7); 

//Convert to UTC in a safe way 
var date_utc = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()); 

//Make the calculation in UTC format 
var beforeStare_utc = date_utc.addDays(-1); 

//Show to the user in his/her local time 
var beforeStare = new Date(beforeStare_utc + " UTC"); 

여기 JSFiddle

0

자바 스크립트 날짜는 정확히 두 개의 시간대에 대해 알고있다. 세 번째 시간대에서 날짜를 파싱 할 수 있지만 JavaScript는 해당 시간대를 즉시 잊어 버리고 해당 날짜를 현지 시간 또는 UTC로 알려줍니다.

하루전 Mon Oct 8 00:00:00 UTC-0300 2012Mon Oct 7 00:00:00 UTC-0300 2012입니다. -0400의 현지 시간으로 변환하면 Mon Oct 6 23:00:00 UTC-0400 2012이됩니다.

Updated jsFiddle

관련 문제