현지 시간으로 UTC UTC


145

UTC 시간을 현지 시간으로 변환하려고합니다. 이 링크 에서이 예제를 따르고 있습니다 : http://jsfiddle.net/FLhpq/4/light/ . 올바른 로컬 출력을 얻을 수없는 것 같습니다. 예를 들어, 10:30이 여기에 10:30이 아니라 15:30을 얻는 대신 여기에 내 코드가 있습니다.

var date = moment.utc().format('YYYY-MM-DD HH:mm:ss');

var localTime  = moment.utc(date).toDate();

localTime = moment(localTime).format('YYYY-MM-DD HH:mm:ss');

console.log("moment: " + localTime);

내가 무엇을 하든지 항상 UTC 시간에 나옵니다. 나는 휴스턴에 살고 있으므로 시간대가 문제라는 것을 알고 있습니다. 링크의 코드를 따랐지만 현지 시간을 가질 수 있습니다. 내가 뭘 잘못하고 있죠?

답변:


238

UTC 시간을 로컬로 변환하려면 사용해야합니다 moment.local() 합니다.

자세한 내용은 문서를

예:

var date = moment.utc().format('YYYY-MM-DD HH:mm:ss');

console.log(date); // 2015-09-13 03:39:27

var stillUtc = moment.utc(date).toDate();
var local = moment(stillUtc).local().format('YYYY-MM-DD HH:mm:ss');

console.log(local); // 2015-09-13 09:39:27

데모:

var date = moment.utc().format();
console.log(date, "- now in UTC"); 

var local = moment.utc(date).local().format();
console.log(local, "- UTC now to local"); 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>


16
나를 위해 일하지 않았다, 시간은 여전히 ​​내 브라우저 시간보다 5 시간 빠르다
brian Scroggins

momentjs가 현지 시간대를 알고있는 경우이를 검색하는 방법이 있습니까, 아니면이를 수행하는 데 moment.tz.guess ()가 필요합니까?
jEremyB

@jEremyB, moment().format('Z')그리고 moment().format('ZZ')당신을 도울 수 있습니다. 또한, (new Date()).getTimezoneOffset()아마도 당신에게 충분할지도 모릅니다
axon

@brianScroggins, 잊지 마세요 .utc(date). 첫 번째 부분으로, var local = ...그것이없는 선 은 오도 될 수 있습니다.
Jocelyn

62

이 시도:

let utcTime = "2017-02-02 08:00:13";

var local_date= moment.utc(utcTime ).local().format('YYYY-MM-DD HH:mm:ss');

3
저장 영역을 지정하면 나에게 도움이되었습니다 (이 답변). 또한 항상 utc로 저장 한 다음 클라이언트 측에서 형식을 지정하면 삶이 더 쉬워집니다.
Juan Pablo Ugas

1
이것은 우리의 DB에서 UTC로 시간을 절약하고 클라이언트에서 현지 시간 만 표시하는 경우에 효과적이었습니다. 감사.
Alex Ehlert

18
let utcTime = "2017-02-02 08:00:13.567";
var offset = moment().utcOffset();
var localText = moment.utc(utcTime).utcOffset(offset).format("L LT");

JsFiddle을 보십시오


2
이것은 잘 작동하지만 .local ()이 동일한 결과를 반환하지 않는 이유는 무엇입니까?
Steve

이 바이올린은 내 컴퓨터에서 다음 결과를 반환합니다. 02/02/2017 8:00 AM (UTC Time) 02/02/2017 10:00 AM (현지 시간) 02/02/2017 9:00 AM (현지 시간 다른 방법 )
Steve

3

참고 : 날짜 형식을 적절히 업데이트하십시오.

형식 날짜

   __formatDate: function(myDate){
      var ts = moment.utc(myDate);
      return ts.local().format('D-MMM-Y');
   }

형식 시간

  __formatTime: function(myDate){
      var ts = moment.utc(myDate);
      return ts.local().format('HH:mm');
  },

3

UTC를 현지 시간으로 변환하려면

let UTC = moment.utc()
let local = moment(UTC).local()

아니면 직접 현지 시간을 원합니다

let local = moment()

var UTC = moment.utc()
console.log(UTC.format()); // UTC time

var cLocal = UTC.local()
console.log(cLocal.format()); // Convert UTC time

var local = moment();
console.log(local.format()); // Local time
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>


0

모든 시간대를 현지 시간으로 변환하는 하나의 함수를 만들었습니다.

요구 사항 :

1. npm i moment-timezone

function utcToLocal(utcdateTime, tz) {
    var zone = moment.tz(tz).format("Z") // Actual zone value e:g +5:30
    var zoneValue = zone.replace(/[^0-9: ]/g, "") // Zone value without + - chars
    var operator = zone && zone.split("") && zone.split("")[0] === "-" ? "-" : "+" // operator for addition subtraction
    var localDateTime
    var hours = zoneValue.split(":")[0]
    var minutes = zoneValue.split(":")[1]
    if (operator === "-") {
        localDateTime = moment(utcdateTime).subtract(hours, "hours").subtract(minutes, "minutes").format("YYYY-MM-DD HH:mm:ss")
    } else if (operator) {
        localDateTime = moment(utcdateTime).add(hours, "hours").add(minutes, "minutes").format("YYYY-MM-DD HH:mm:ss")
    } else {
        localDateTime = "Invalid Timezone Operator"
    }
    return localDateTime
}

utcToLocal("2019-11-14 07:15:37", "Asia/Kolkata")

//Returns "2019-11-14 12:45:37"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.