[javascript] UTC 날짜 시간을 현지 날짜 시간으로 변환

서버에서 다음 형식의 datetime 변수를 얻습니다 .UTC 6/29/2011 4:52:48 PM시간입니다. JavaScript를 사용하여 현재 사용자의 브라우저 시간으로 변환하고 싶습니다.

JavaScript 또는 jQuery를 사용하여 어떻게 수행 할 수 있습니까?



답변

자바 스크립트에서 날짜로 변환하기 전에 문자열에 ‘UTC’를 추가하십시오.

var date = new Date('6/29/2011 4:52:48 PM UTC');
date.toString() // "Wed Jun 29 2011 09:52:48 GMT-0700 (PDT)"


답변

필자의 관점에서 서버는 일반적으로 표준화 된 ISO 8601 형식으로 날짜 시간을 반환해야 합니다 .

여기에 더 많은 정보가 있습니다 :

이 경우 서버는 '2011-06-29T16:52:48.000Z'JS Date 객체로 직접 피드를 반환 합니다.

var utcDate = '2011-06-29T16:52:48.000Z';  // ISO-8601 formatted date returned from server
var localDate = new Date(utcDate);

localDate내 경우에는 2 시간 후에 (DK 시간)이 될 것입니다 올바른 현지 시간에있을 것입니다.

당신은 정말 한 서버에서 기대하는 어떤 형식과 일치로, 모두에게 단지 물건을 복잡하게이 구문 분석 할 필요가 없습니다.


답변

이것은 보편적 인 해결책입니다.

function convertUTCDateToLocalDate(date) {
    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;
}

용법:

var date = convertUTCDateToLocalDate(new Date(date_string_you_received));

클라이언트 로컬 설정에 따라 날짜를 표시하십시오.

date.toLocaleString();


답변

클라이언트의 (UTC) 오프셋 (분)을 가져와야합니다.

var offset = new Date().getTimezoneOffset();

그런 다음 서버에서 얻은 시간에 해당하는 덧셈 또는 뺄셈을 수행하십시오.

도움이 되었기를 바랍니다.


답변

나에게 위의 해결책은 효과가 없었다.

IE를 사용하면 UTC 날짜 / 시간을 로컬로 변환하는 것이 까다 롭지 않습니다. 나에게 웹 API의 날짜 시간은 '2018-02-15T05:37:26.007'현지 시간대별로 변환하고 싶으므로 JavaScript에서 아래 코드를 사용했습니다.

var createdDateTime = new Date('2018-02-15T05:37:26.007' + 'Z');


답변

이 기능을 머리에 넣으십시오.

<script type="text/javascript">
function localize(t)
{
  var d=new Date(t+" UTC");
  document.write(d.toString());
}
</script>

그런 다음 페이지 본문에서 각 날짜에 대해 다음을 생성하십시오.

<script type="text/javascript">localize("6/29/2011 4:52:48 PM");</script>

GMT 및 시간대를 제거하려면 다음 행을 변경하십시오.

document.write(d.toString().replace(/GMT.*/g,""));


답변

이것은 나를 위해 작동합니다 :

function convertUTCDateToLocalDate(date) {
    var newDate = new Date(date.getTime() - date.getTimezoneOffset()*60*1000);
    return newDate;
}