2017-10-27 3 views
1

미국 중부 표준시 (CDT)에 날짜 시간 (금요일, 10 월 27 일 2017 4:00:00 AM)이 있습니다. 이 날짜 시간을 다른 시간대로 변환하고 싶습니다. 이 시간대는 변환하고 싶습니다. 난 반환 날짜 시간이 잘못US Central Time을 다른 시간대로 변환 JS

var dateTime = moment.tz("2017-10-27 4:00:00 AM", "America/Chicago"); 
var IST = dateTime.tz('Asia/Calcutta').format('MMMM Do YYYY, h:mm:ss a'); 
console.log(IST) // October 27th 2017, 9:30:00 am 

을하고있는 중이 야 어떻게

Eastern Time (EDT) 
Pacific Time (PDT) 
New Delhi, India (IST) 
Central Europian Time (CET) 
Riyadh, Saudi Arabia (AST) 
Pakistan Standard Time (PKT) 
Lagos, Nigeria (WAT) 
Australian Standard Time (AET) 
Greenwich Mean Time (GMT) 
Moscow, Russia (MSK) 
China Standard Time (CST) 

이입니다. 인도 표준시는 중부 표준시보다 10 시간 30 분 앞서서입니다.

그것은 금요일 해야 10 월 27 일 2017 년 오후 2시 반 (IST)

감사합니다!

+0

그래, 지금까지 해본 적이 있습니까? 당신이 중간 시간에 값을 파싱해야하고 https://momentjs.com/timezone/docs/#/using-timezones/converting-to-zone/에 따라'tz' 뮤 테이타를 호출해야하는 것 같습니다. –

+0

var dateTime = moment.tz ("2017-10-27 4:00:00 AM", "America/Chicago"); var IST = dateTime.tz ('아시아/캘커타'). 형식 ('MMMM YYYY, h : mm : ss a'); console.log (IST) // 2017 년 10 월 27 일 오전 9:30:00 이 코드가 맞습니까? 실제로는 정확하지 않습니다. – Mohanraj

+1

** 질문을 ** 수정하여 시도한 내용과 예상했던 내용을 확인하십시오. –

답변

4

문제는 인도 표준시로의 변환과 관련이 없습니다. 시카고 시간의 원래 구문 분석입니다.

이 :

var dateTime = moment.tz("2017-10-27 4:00:00 AM", "America/Chicago"); 

은 ... 오전 4시 UTC으로 처리 한 다음 미국/시카고로 변환, 그래서 시카고 (10 월 26 일) 오후 11시 현지 시간을 나타내는 끝된다. dateTime 값을 로깅하면 알 수 있습니다.

당신이 코드를 변경하는 경우 :

var dateTime = moment.tz("2017-10-27 04:00:00", "America/Chicago"); 

... 다음은 당신이 예상 믿는 인 27 일에 오전 4시 현지 시간으로 처리됩니다. 아시아/캘커타로 전환 한 결과는 예상대로 오후 2시 30 분입니다.

입력 형식을 변경하려면 또는 형식을 지정하십시오. 예를 들어 다음과 같이 올바르게 작동합니다.

var dateTime = moment.tz("2017-10-27 4:00:00 AM", "YYYY-MM-DD h:mm:ss a", "America/Chicago"); 
+0

응답의 마지막 부분에있는 형식 매개 변수는''yyyy-MM-DD h : mm : ss a "'가 아닌''YYYY-MM-DD h : mm : ss A"'이어야한다고 생각합니다. 소문자 'yyyy' 토큰이 아닙니다. – VincenzoC

+0

@VincenzoC : 감사합니다. –

+0

@JonSkeet 좋아요! 지금은 잘 작동합니다. 고마워. – Mohanraj

관련 문제