2014-09-29 2 views
1

월요일 저녁에 내 목소리가 찢어집니다! 아무도 내가 아래의 문제를 이해하는 데 도움 주시기 바랍니다 수 있습니까? 브라우저에 다음 문자열이 있습니다. 01-09-2014 (현지 시간입니다), 이것을 서버로 다시 저장할 수 있도록 이것을 UTC로 변환하고 싶습니다.모멘트에서 UTC 시간을 작성하면 이상한 결과가 반환됩니다.

var localDate = moment("01-09-2014", "DD-MM-YYYY"); 
    var utcDate = localDate.utc(); 
    console.log("Local Date " + localDate.toDate() + " UTC Date " + utcDate.toDate()); 

을 이상하게도, 마지막 라인 출력 :

Local Date Mon Sep 01 2014 00:00:00 GMT+0200 (Romance Daylight Time) UTC Date Mon Sep 01 2014 00:00:00 GMT+0200 (Romance Daylight Time) 

질문

  • 을 왜 UTC 날짜가 정확히 같은 모양 않습니다 여기 내가 뭐하는 거지입니다 현지 시간 (내가 GMT + 2 지역에있을 때 현지 시간이 UTC보다 2 시간 앞서기를 기대합니다)?
  • UTC 날짜가 GMT + 0200 인 이유는 무엇입니까? UTC 날짜가 GMT + 000 일 것으로 예상합니다.

이 두 가지 질문을 도와 주시겠습니까? 나는 확실하지 않다 ...하지만 나는 그것이해야한다고 생각 Thoug

답변

3

:

var utcDate = localDate.utc().format() 

참조 :

http://momentjs.com/docs/#/parsing/utc/

업데이트

바이올린 :

,

JS :

console.log("Local Date: " + moment("01-09-2014", "DD-MM-YYYY").toDate()); 
console.log("UTC Date: " + moment("01-09-2014", "DD-MM-YYYY").utc().format("ddd MMM DD YYYY HH:mm:ss zZZ")); 

출력 :

Local Date: Mon Sep 01 2014 00:00:00 GMT+0200 
UTC Date: Sun Aug 31 2014 22:00:00 UTC+0000 

결론 :

toDate()은 현지 시간 줄 것이다 - UTC는 답변을 utc().format()

+0

감사를 사용하여 얻을 수를, 형식 출력 문자열, 내가 원하는 건 자바 스크립트 날짜 개체입니다. 더 나쁜 경우, 형식은 8- 하루 뒤의 날짜 문자열을 반환합니다. – GETah

+0

예 -하지만 원하는 값을 얻을 수 있습니다 ... 내 업데이트 된 답변보기 :) – conceptdeluxe

+2

@GETah - JS'Date' 객체는 항상 *입니다. * 로컬 컴퓨터의 표준 시간대를 사용합니다. 'toDate()'를 호출하자마자 순간의'utc' 함수의 효과를 취소합니다. 당신은 어쨌든'Date' 객체를 서버에 전달할 수 없습니다. 궁극적으로, 문자열로 포맷해야하므로, 순간의'format' 또는'toISOString' 함수를 사용해야합니다. –

관련 문제