2009-03-19 9 views
13

jQuery를 사용하고 있으며 독일 현지 시간을 받아야합니다.jQuery에서 로컬 시간을 얻으려면 어떻게해야합니까?

모든 국가에서 내 웹 사이트를 방문하는 사람은 독일에 몇 시간인지 알 수 있어야합니다.

시간이 0:00에서 12:00 사이 인 경우 "Good Morning"이라는 경고문을 읽어야합니다.

시간이 12:00에서 17:00 사이 인 경우 "Good Afternoon"이라는 경고문을 읽어야합니다.

jQuery에서 어떻게 구현할 수 있습니까?

+2

클라이언트 측 날짜/시간에 의존하지 마십시오. 정확한 것을 보장 할 수는 없습니다! –

+0

이것은 실제로 jQuery와는 아무런 관련이 없습니다. –

+3

클라이언트가 항상 옳다는 사실은 어떻습니까? 사용자가보고있는 한, 잘못된 시간 일지라도 시간은 정확합니다. 다른 서버에서 적절한 시간을 얻으면 사용자가 자신의 시점에서 잘못된 시간을 표시합니다. – sean

답변

24

당신은 독일 시간대의 오프셋 시간을 GMT 시간을 가져온 다음 추가 할 클라이언트의 오프셋 (offset) 로컬 시간대를 얻을 수 있습니다 (중앙 유럽 표준시 GMT + 1) :

function getDate(offset){ 
    var now = new Date(); 
    var hour = 60*60*1000; 
    var min = 60*1000; 
    return new Date(now.getTime() + (now.getTimezoneOffset() * min) + (offset * hour)); 
} 

//... 

var dateCET = getDate(1); // Central European Time is GMT +1 

if (dateCET.getHours() < 12) { 
    alert ("Good morning."); 
} else { 
    alert ("Good afternoon."); 
} 

업데이트 : 나는 @Josh에 동의한다. 위 코드는 완전히 클라이언트에 의존한다. 이제 더 잘 수행하려고하자

$(document).ready(function(){ 
    var timezone = "Europe/Berlin"; 
    $.getJSON("http://json-time.appspot.com/time.json?tz="+timezone+"&callback=?", 
    function(data){ 
     if (data.hour < 12) { 
     alert ("Good morning in "+timezone); 
     } else { 
     alert ("Good afternoon in "+timezone); 
     } 
    }) 
}); 

우리는 지금 jsontime 서버에 크로스 도메인 요청을 할 JSONP을 활용하는이 서버는 시간과 시간대 정보를 조회 할 수있는 완전한 JSON API를 제공합니다.

here 코드로 재생할 수 있으며 JSONP API here을 탐색 할 수 있습니다.

만세!, 서버 측 코드 없음!

+3

버블을 터뜨려 죄송합니다. 내 친구,하지만 이것은 완전히 신뢰할 수 없습니다. 이것은 클라이언트 시스템 클록에 따라 다르며, 이는 완전히 터무니없는 것으로 설정 될 수 있습니다. 클라이언트 시계를 사용하면 과거에 나를 위해 앱을 완전히 엉망으로 만들었습니다. 숨겨진 필드에 서버 측 날짜/시간을 주입해야합니다! –

+0

동의합니다. 이것은 완전히 클라이언트와 관련이 있습니다. 더 나은 것을 게시 할 것입니다 ... – CMS

+8

인사말을 표시하는 데 사용되는 것에 대해 조금 생각하지 않습니까? 그것은 미사일 발사 제어 응용 프로그램이 아닙니다. – nickf

6

독일에서 시간을 가져 오시겠습니까, 아니면 사용자의 시간대를 사용하고 싶습니까? 후자의 경우 Date() 함수의 기본값은 현지 시간대에서 작동합니다.

var d = new Date(); // defaults to the current time in the current timezone 
if (d.getHours() < 12) { 
    alert ("Good morning."); 
} else { 
    alert ("Good afternoon."); 
} 
4

웹 서버의 날짜/시간을 페이지의 숨김 필드에 삽입해야합니다. 그런 다음 jQuery로 액세스하여 자연스러운 Javascript Date 개체를로드 할 수 있습니다. 아니요은 클라이언트 측 날짜/시간에 의존하기를 원하므로 사용자가 제어 할 수 없으며 과도한 것으로 설정할 수 있습니다. 날 믿어.

+0

단순한 "좋은 아침/저녁"인사말에 사용되는 그 OP에 명시된 케이스 주어진, 내 대답, 건배 – CMS

+1

좋아, 지금 막 편집했습니다, 이것은 우스 꽝스럽고 과장입니다. 상단. – nickf

+5

nickf : 모든 사용자가 비슷한 경험을 할 것이라는 100 % 확신은 어리석은 것도 아니고 정상도 아닙니다. 내 세계에서는 절대적으로 필수적입니다. –

관련 문제