JavaScript에서 날짜를 다른 시간대로 변환 날짜를 다른 시간대로 변환하는

한 시간대의 날짜를 다른 시간대로 변환하는 함수를 찾고 있습니다.

두 개의 매개 변수가 필요합니다.

  • 날짜 ( “2012/04/10 10:10:30 +0000″형식)
  • 시간대 문자열 ( “아시아 / 자카르타”)

시간대 문자열은 http://en.wikipedia.org/wiki/Zone.tab에 설명되어 있습니다 .

이 작업을 수행하는 쉬운 방법이 있습니까?



답변

var aestTime = new Date().toLocaleString("en-US", {timeZone: "Australia/Brisbane"});
console.log('AEST time: '+ (new Date(aestTime)).toISOString())

var asiaTime = new Date().toLocaleString("en-US", {timeZone: "Asia/Shanghai"});
console.log('Asia time: '+ (new Date(asiaTime)).toISOString())

var usaTime = new Date().toLocaleString("en-US", {timeZone: "America/New_York"});
console.log('USA time: '+ (new Date(usaTime)).toISOString())

var indiaTime = new Date().toLocaleString("en-US", {timeZone: "Asia/Kolkata"});
console.log('India time: '+ (new Date(indiaTime)).toISOString())

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString


답변

들어 moment.js의 사용자, 당신은 지금 사용할 수있는 순간 시간대를 . 그것을 사용하면 함수는 다음과 같습니다.

function toTimeZone(time, zone) {
    var format = 'YYYY/MM/DD HH:mm:ss ZZ';
    return moment(time, format).tz(zone).format(format);
}


답변

http://www.techrepublic.com/article/convert-the-local-time-to-another-time-zone-with-this-javascript/6016329 에서 뻔뻔스럽게 도난

/**
 * function to calculate local time
 * in a different city
 * given the city's UTC offset
 */
function calcTime(city, offset) {

    // create Date object for current location
    var d = new Date();

    // convert to msec
    // add local time zone offset
    // get UTC time in msec
    var utc = d.getTime() + (d.getTimezoneOffset() * 60000);

    // create new Date object for different city
    // using supplied offset
    var nd = new Date(utc + (3600000*offset));

    // return time as a string
    return "The local time in " + city + " is " + nd.toLocaleString();
}

이 기능은 도시 / 국가 이름 및 오프셋 값을 제공하여 시간대 값을 계산하는 데 유용합니다.


답변

Safari를 제외한 대부분의 데스크탑 (모바일 아님) 브라우저 는 인수와 함께 toLocaleString 함수를 지원하지만 이전 브라우저는 일반적으로 인수를 무시합니다.

new Date().toLocaleString('en-US', { timeZone: 'Asia/Jakarta' })


답변

알았어!

내가 사용하고 시간대-JS를 . 이것은 코드입니다.

var dt = new timezoneJS.Date("2012/04/10 10:10:30 +0000", 'Europe/London');
dt.setTimezone("Asia/Jakarta");

console.debug(dt); //return formatted date-time in asia/jakarta


답변

큰 라이브러리를 가져 오지 않으려면 Intl.DateTimeFormat 을 사용 하여 Date 객체를 다른 시간대로 변환하면됩니다.

// Specifying timeZone is what causes the conversion, the rest is just formatting
const options = {
  year: '2-digit', month: '2-digit', day: '2-digit',
  hour: '2-digit', minute: '2-digit', second: '2-digit',
  timeZone: 'Asia/Jakarta',
  timeZoneName: 'short'
}
const formater = new Intl.DateTimeFormat('sv-SE', options)
const startingDate = new Date("2012/04/10 10:10:30 +0000")

const dateInNewTimezone = formater.format(startingDate)
console.log(dateInNewTimezone) // 12-04-10 17:10:30 GMT+7

오프셋, 일광 절약 및 과거의 변경 사항이 처리됩니다.


답변

알았다 !

표시된 날짜 = 서버 날짜를 강제하고 싶었으므로 로컬 설정 (UTC)이 중요하지 않습니다.

내 서버는 GMT-6-> new Date (). getTimezoneOffset () = 360입니다.

myTZO = 360;
myNewDate=new Date(myOldDateObj.getTime() + (60000*(myOldDateObj.getTimezoneOffset()-myTZO)));
alert(myNewDate);