2013-10-26 3 views
0
xdate: 2013-10-26 = 
Fri Oct 25 2013 20:00:00 GMT-0400 (Eastern Daylight Time) 

xdate: Oct 26, 2013 = 
Sat Oct 26 2013 00:00:00 GMT-0400 (Eastern Daylight Time) 

xdate: 10/26/2013 = 
Sat Oct 26 2013 00:00:00 GMT-0400 (Eastern Daylight Time) 

xdate: Oct. 26, 2013 = 
Sat Oct 26 2013 00:00:00 GMT-0400 (Eastern Daylight Time) 

위의 문자열을 사용하여 새 날짜 (xdate)를 사용하여 자바 스크립트에 날짜를 만들면 나오는 yyyy-mm-dd를 제외하고 모두 제대로 작동하는 것 같습니다. 밤 8 시까 지. 불행히도 이것은 HTML5 type = date에 의해 만들어진 형식입니다. 그 문자열을 갖는 어떤 방법으로도 보통 날짜를 만들 수 있습니다.자바 스크립트 새해 전날 오후 8 시부 터 나오는 날

내 질문에 더 많은 것 같아. 왜 그 한 형식으로 4 시간 동안 날짜를 만듭니다. 2013-10-26을 사용하여 날짜를 만든 다음 getDate를 수행하여 25 일을 얻습니다. 그것은 틀린 것처럼 보인다!

답변

1

아니, 당신의 날짜가 전날 밤 오후 8 나오지 않는

전에 오후 8시 밤에 나옵니다. 작성한 날짜는 UTC 날짜입니다. 현지 시간대가 UTC (GMT-4)보다 4 시간 늦기 때문에 그 이유가 나타납니다. 그건 그냥 해당 지역의 시간대를 기준으로 계산 된 날짜의 프리젠 테이션가 내부적으로, 날짜 시간 1970년 1월 1일 0시 0 분 0 초 (UTC)부터 밀리 초의 숫자로 표현 입니다입니다.

모든 시간대에서 동일한 값을 반환하는 Date.getTime()을 사용하여 날짜의 내부 표현을 얻을 수 있습니다. 예를 들어,로 : 현지 시간대가 GMT-4

var date = new Date("2013-10-26"); 
  • : 당신은 프레젠테이션을 볼 수 있습니다 : Fri Oct 25 2013 20:00:00 GMT-0400

  • 현지 시간대는 GMT + 7 인 경우. 당신은 볼 수 있습니다 : Sat Oct 26 2013 07:00:00 GMT+0700

그러나 date.getTime() 반환 같은 값을. 그것이 당신이 신경 써야 할 가치입니다.

0

이 같은 데이터를 생성하고이 timeone offset 문제를 방지 할 수 있습니다

xdate = '2013-10-26'; 
var date = new Date(xdate.replace(/-/g, ',')); 

테스트를 : d1d2 사이의 날짜 값에

var d1 = new Date(xdate); // Fri Oct 25 2013 20:00:00 GMT-0400 (EDT) 

var d2 = new Date(xdate.replace(/-/g, ',')); // Sat Oct 26 2013 00:00:00 GMT-0400 (EDT) 

공지 사항의 차이를.

d2

때문에이 -,에 대체의 Oct 26 2013의 정확한 값을 보이고있다.

+0

이렇게하면 UTC http://jsfiddle.net/gURGG/에서 날짜가 만들어지는 것과 동일한 결과가 생성됩니다. 현지 시간대로 사용해보십시오. –

+0

@KhanhTO : 위의 ** 테스트 ** 섹션을 추가하여 두 출력 간의 차이를 확인할 수 있습니다. – anubhava

+0

@KhanhTO : 귀하의 [jsfiddle] (http://jsfiddle.net/gURGG/1/)도 2 개의 다른 날짜를 보여줍니다. 첫 번째 선수는 다음과 같습니다 :'Sat Oct 26 2013 00:00:00 GMT-0400 (EDT)'하지만 두 번째 선수는 기본값 :'Fri Oct 25 2013 20:00:00 GMT-0400 (EDT)' 결과. – anubhava

관련 문제