[javascript] 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);