2009-12-03 6 views
7

나는 예를 들어, 모든 페이지에 날짜 스탬프를 표시하는 웹 응용 프로그램이 있습니다- 클라이언트 측을

2009년 12월 12일 오후 6시

동적으로 사용자의 시간대를 감지하고 JavaScript를 사용하여 표시를 변경하고 싶습니다.

그래서 뉴욕의 사용자는 볼 것입니다 :

2009년 12월 12일 오후 6시

는 캘리포니아 사용자가 볼 것이지만 :

2009년 12월 12일 3 : 00 pm

제안 사항?

+2

http://prideparrot.com/blog/archive/2011/9/how_to_display_dates_and_times_in_clients_timezone – VJAI

답변

2

당신이 멋진 "점진적 개선 '와 함께 할 수있는 방법입니다 UTC 등). 그런 다음로드시 현지 시간으로 교체하십시오 (원래 시간대가 제공되면 JavaScript로 자동 처리됨).

<div id="timestamp">December 12, 2009 6:00 pm GMT</div> 
<script type="text/javascript"> 
    var timestamp = document.getElementById('timestamp'), 
     t   = new Date(timestamp.innerHTML), 
     hours  = t.getHours(), 
     min  = t.getMinutes() + '', 
     pm  = false, 
     months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; 

    if(hours > 11){ 
     hours = hours - 12; 
     pm = true; 
    } 

    if(hours == 0) hours = 12; 
    if(min.length == 1) min = '0' + min; 

    timestamp.innerHTML = months[t.getMonth()] + ' ' + t.getDate() + ', ' + t.getFullYear() + ' ' + hours + ':' + min + ' ' + (pm ? 'pm' : 'am'); 
</script> 
+0

IE가 해당 형식을 올바르게 구문 분석하지 않을 것으로 예상됩니다. – Bergi

+0

@Bergi - It def는 IE8 + –

+0

에서 작동합니다. IE 11에서는 작동하지 않습니다. –

6

Date.getTimeZoneOffset()을 사용하면 GMT에서 로컬 오프셋을 가져올 수 있습니다.

var date = new Date(); 
var offset = date.getTimezoneOffset(); 

거기에서 그 SMOP. 개체를 사용하면 사람이 읽을 수있는 날짜를 얻으려면 date.toDateString으로 전화 할 수 있습니다. 서버 측에 필요한 경우 자바 스크립트에서 GET 또는 POST를 사용하여 서버에 오프셋을 보냅니다.

날짜 형식은 또 다른 이야기입니다. Javascript는 많이 제공하지 않습니다. 해킹 할 수는 있지만 버그와 광기는 거짓말입니다. 날짜 형식은 좋은 자바 스크립트 라이브러리에서 제공해야하는 형식입니다. 예를 들어, JQuery는 Datepicker.formatDate입니다.

출력을 표시하려는 날짜,하지만 난 여기 GMT를 사용하는 자사의 시간대를 (지정해야합니다,하지만 당신은 사용할 수 있습니다 여기에

0

우리는 당신에게 많은 도움을 줄 수 날짜와 시간에 대한 기능을 가지고 ExtJS 라이브러리를 사용하고 있습니다. 사실 Mozilla Firefox에서는 브라우저의 시간대에 따라 모든 날짜와 시간을 표시합니다.

관련 문제