2016-10-12 2 views
0

UTC 형식의 날짜가 있습니다.UTC 날짜가 현지 시간으로 변환됩니다.

"2016-10-12 05:03:51" 

UTC 날짜를 현지 시간으로 변환하는 기능을 만들었습니다.

function FormatDate(date) 
{ 
    var arr = date.split(/[- :T]/), // from your example var date = "2012-11-14T06:57:36+0000"; 
    date = new Date(arr[0], arr[1]-1, arr[2], arr[3], arr[4], 00); 

    var newDate = new Date(date.getTime()+date.getTimezoneOffset()*60*1000); 

    var offset = date.getTimezoneOffset()/60; 

    var hours = date.getHours(); 

    newDate.setHours(hours - offset); 

    return newDate; 
} 

내 로컬 시간대는 GMT +0530입니다. 나는 정확한 날짜와 시간을 얻을 수있는 온라인 도구를 사용하여 날짜를 변환

Tue Oct 11 2016 10:33:00 GMT+0530 (IST) 

:

내 코드는이 출력을 생산했다.

Wednesday, October 12, 2016 10:30 AM 

내 코드는 온라인 도구와 시간은 일치하지만 날짜는 아닙니다.

moment.js을 사용하여 코드 출력을 수정할 수 있습니까?

답변

0

을 당신이 순간을 사용하고 있으리라 믿고있어 : 그것은 문자열을 구문 분석 할 때 UTC를 사용하는 순간을 강제로, 다음 로컬 출력에 기록합니다.

그런 경우에는 접근 방식을 일관되게 유지하고 순간 및 날짜 개체를 혼합해서는 안됩니다.

var dateStr = '2016-10-12 05:03:51'; 
 
var timeZone = "+0530"; 
 
var date = moment.utc(dateStr).utcOffset(dateStr + timeZone) 
 
console.log(date.toString())

+0

나를위한 오류를 반환합니다. 또한 파서에게 당신이 제공하는 형식을 항상 알려줘야합니다. 그렇지 않으면 제대로 추측 한 것입니다. – RobG

1

UTC는 형식이 아닌 표준 형식입니다. 문자열에 0이 사용되었다고 가정합니다. 즉, "2016-10-12 05:03:51"은 "2016-10-12 05 : 03 : 51 + 0000"입니다.

문자열을 구문 분석하지만 UTC 메서드를 사용하여 날짜를 만들 때 호스트가 시스템 오프셋 값을 조정하지 못하도록 할 수 있습니다.

당신이 moment.js를 사용하려면

function parseDateUTC(s){ 
 
    var arr = s.split(/\D/); 
 
    return new Date(Date.UTC(arr[0], arr[1]-1, arr[2], arr[3], arr[4], arr[5])); 
 
} 
 

 
console.log(parseDateUTC('2016-10-12 05:03:51').toLocaleString());

, 당신은 다음과 같은 작업을 수행 할 수 있습니다. 당신이 moment 태그했기 때문에,

var d = moment.utc('2016-10-12 05:03:51','YYYY-MM-DD HH:mm:ss'); 
 
console.log(d.local().format());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.0/moment.js"></script>

+0

감사 RobG 이 나를 위해 작동합니다! –

+0

많은 감사, 당신은 내 하루를 구했습니다! – bravohex

관련 문제