ProgramingTip

특정 시간의 시간 가져 오기

bestdevel 2020. 12. 15. 19:40
반응형

특정 시간의 시간 가져 오기


이 질문에 이미 답변이 있습니다.

자바 스크립트 Date클래스를 사용하고 있으며 getDate()메서드를 사용하여 현재 날짜를 얻으려고합니다 . 그러나 분명히 시스템 날짜 및 시간을로드하고 있습니다. 인도에서 코드를 실행하고 같은 방법으로 영국의 날짜와 시간을 보내고 싶습니다. 어떻게 할 수 있습니까?


UTC는 알고 계시를 전달하고 다음 함수를 사용하여 시간을 얻을 수 있습니다.

function calcTime(city, offset) {
    // create Date object for current location
    var d = new Date();

    // convert to msec
    // subtract 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 for city"+ city +" is "+ nd.toLocaleString();
}

alert(calcTime('Bombay', '+5.5'));

출처 : 현지 시간을 다른 시간으로 변환


사용할 수 있습니다 .Intl.DateTimeFormat

var options = {
    timeZone: 'Europe/London',
    year: 'numeric', month: 'numeric', day: 'numeric',
    hour: 'numeric', minute: 'numeric', second: 'numeric',
},
    formatter = new Intl.DateTimeFormat([], options)
formatter.format(new Date())

또는 대량 사용 대신 한 번만 서식을 지정하는 경우 .Date.prototype.toLocaleDateString()

(new Date()).toLocaleString([], options)

불행하게도 브라우저가하지 않도록 , UTC 이외의 존재를 이해하는 데 필요한 try이 경우 대체 아웃이 블록 그림은, 예를 들어 서버를 가져옵니다.


이를 수행하는 가장 좋은 방법은 다음과 같이 getLocaleString을 사용하는 것입니다.

날짜 개체를 만듭니다.

date = new Date(0)

베를린에있는 경우 다음 노드로 변환해야합니다.

1970 년 1 월 1 일 목요일 01:00:00 GMT + 0100 (CET)

아테네에서 시간 확인 :

date.toLocaleString('de-DE', {hour: '2-digit',   hour12: false, timeZone: 'Europe/Athens' })

'02'

상하이에서 근무 시간 :

date.toLocaleString('de-DE', {hour: '2-digit',   hour12: false, timeZone: 'Asia/Shanghai' })

'08'


이것은 ##를 얻는 올바른 방법입니다.

function getTime(offset)
        {
            var d = new Date();
            localTime = d.getTime();
            localOffset = d.getTimezoneOffset() * 60000;

            // obtain UTC time in msec
            utc = localTime + localOffset;
            // create new Date object for different city
            // using supplied offset
            var nd = new Date(utc + (3600000*offset));
            //nd = 3600000 + nd;
            utc = new Date(utc);
            // return time as a string
            $("#local").html(nd.toLocaleString());
            $("#utc").html(utc.toLocaleString());
        }

당신은 사용할 수 있습니다 및 관련 방법은 UTC 시간을 기반으로 한 번에 액세스 비용, 다음 변환합니다.getUTCDate()getUTC...()

원한다면 유닉스 시대 이후 UTC로 초를 반환 하는를 사용할 수 있지만 훨씬 더 관련 될 것입니다 .valueOf()


Date.getTimezoneOffset ()

getTimezoneOffset () 메서드는 그리니치 표준시 (GMT)와 현지 시간 간의 시차를 분 단위로 반환합니다.

예를 들어 시간대가 GMT + 2 인 경우 -120이 반환됩니다.

참고 :이 메서드는 항상 Date 개체와 함께 사용됩니다.

var d = new Date()
var gmtHours = -d.getTimezoneOffset()/60;
document.write("The local time zone is: GMT " + gmtHours);
//output:The local time zone is: GMT 11

정확한 날짜와 시간이 정말 중요하다면; 시간을 반환하는 서비스를 서버 (물론 UTC로 실행)에 두는 것이 가장 좋습니다. 그런 다음 클라이언트에서 새 날짜를 만들고 값을 비교하고 필요한 경우 모든 날짜를 서버 시간의 오프셋으로 조정할 수 있습니다.

왜 이러나요? 버그 보고서를 받은 지 이틀 후에 메일로 발송 된 것을 알기 전까지는 서버 로그에서 오류 메시지를 찾을 수 없어 재현하기 어려운 버그 보고서가 있었습니다. 당신은 할 수 있습니다 아마 UTC의 타임 스탬프를 전송되는 올바르게 핸들 시간대 변환 브라우저를 신뢰하지만 당신은 분명히 자신의 시스템 시계가 올바르게 설정하도록 사용자를 신뢰할 수 없습니다. (사용자의 시간대도 잘못 설정되어 있으면 현재 서버 시간을 "현지"시간으로 인쇄하는 것 외에는 실제로 해결책이 없습니다.)


.getTimezoneOffset()방법은 작동합니다. 이것은 귀하의 시간대와 GMT 사이의 시간을 가져옵니다. 그런 다음 원하는대로 계산할 수 있습니다.


클라이언트 측의 짧은 대답 : 아니요, 서버 측에서 가져와야합니다.

참조 URL : https://stackoverflow.com/questions/8207655/get-time-of-specific-timezone

반응형