본문 바로가기
프로그램.코딩

서버시간표시, 서버타임기준으로 Client 컴에 시간표시하기

by landzz 2007. 12. 18.

서버는 미국에 있으나 주작업환경은 한국,중국이라 서버DB로 저장될때
서버 localtime 이 적용되어 주작업환경인 한국측에서 시간이 맞지않는상황이 발생..

미국쪽에선 서버만 임대한 상태라 GMT셋팅을 쓰지않고..
CVS로 직백업시 시간변환의 귀차니즘으로 인하야
DATE_ADD(NOW(), interval +15 hour) 를 사용하여 바로 한국시를 기준으로 직업데이트하는방식을 사용..

Remote server : Houston (우리나라와의 시간차 -15시간)

한국에서는 별탈없었는데 중국쪽에서 한시간정도 시간차가 있어서
직원들이 시간이 헷갈린다 하여 로그인시 화면에 서울시간을 표시하기로 해서

삽질이 시작됨...ㅋㅋ

================================================

처음작업한 소스....

<span style='color:#FFFFFF;font-size:11px;font-family:Tahoma;' id='_times'></span>

<script type='text/javascript'>
<!--
     var i=0;
     function Times_curr(){
      var time_txt = document.getElementById("_times");
      today = new Date();
     
      i= i+1000;
      servertime=<?=time()?>*1000;
      //_add_time = <?=substr($GMT_TERM,1)?>*3600 * 1000;
      //processtime=servertime + i + _add_time ;
      processtime=servertime + i  ;
      today.setTime(processtime);
     
      var yy = today.getFullYear();
      var mm = today.getMonth()+1;
     
      /*var mm =""
      switch(today.getMonth()){
       case 0 : mm = "Jan"; break;
       case 1 : mm = "Feb"; break;
       case 2 : mm = "Mar"; break;
       case 3 : mm = "Apr"; break;
       case 4 : mm = "May"; break;
       case 5 : mm = "Jun"; break;
       case 6 : mm = "Jul"; break;
       case 7 : mm = "Aug"; break;
       case 8 : mm = "Sep"; break;
       case 9 : mm = "Oct"; break;
       case 10 : mm = "Nov"; break;
       case 11 : mm = "Dec"; break;
      }*/
      var dd = today.getDate();
      //var ww = today.getDay();
      var ww = ""
      switch(today.getDay()){
       /*case 0 : ww = "Sun"; break;
       case 1 : ww = "Mon"; break;
       case 2 : ww = "Tue"; break;
       case 3 : ww = "Wed"; break;
       case 4 : ww = "Thu"; break;
       case 5 : ww = "Fri"; break;
       case 6 : ww = "Sat"; break;*/
       case 0 : ww = "日"; break;
       case 1 : ww = "月"; break;
       case 2 : ww = "火"; break;
       case 3 : ww = "水"; break;
       case 4 : ww = "木"; break;
       case 5 : ww = "金"; break;
       case 6 : ww = "土"; break;
      }
      var h = today.getHours();
      var m = today.getMinutes();
      var s = today.getSeconds()
      var ctime = "Seoul : ";
     
      //ctime += ww +", "+dd+" "+ mm+ " " +yy +" ";
      ctime += yy+"/"+mm+"/"+dd+"("+ww+") ";
      ctime += ((h<10) ? "0" : "" ) + h +"" + ((m<10) ? ":0" : ":" ) + m + ((s<10) ? ":0" : ":" ) + s ;
     
      //ctime = today.toLocaleString();
      //ctime += "<br>"+today.toGMTString();
      time_txt.innerHTML = ctime;
      setTimeout("Times_curr()",1000);
     
     }
     document.onload = Times_curr();
// -->
</script>

===========================================

별문제가 없는줄 알았는데...
윈도에서 타임존셋팅을 바꿔주니...그타임존을 기준으로 날짜가 표시되는걸루 판명..
부랴부랴 새로작업....

 
아래는 완성된소스..

 

사용자 삽입 이미지







<h
tml>
<head>
<title> New Document </title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
</head>
<body onload='set_Time()'>
<script language="javascript">
<!--

     var i =0;

     var time_set="";

     var c_infos = new Array();
     var c_date = new Array();
     var c_time = new Array();
    

     function getTime(){
          i = i+1;

          if(time_set == "" ){
               var _src = document.getElementById("time_area").innerHTML ;
               c_infos = _src.split(" ");
               //alert(c_infos[0] +" / "+ c_infos[1]);

               c_date = c_infos[0].split("-");
               c_time = c_infos[1].split(":");
          }
          isss = i+" &gt ;"+c_date[0]+"-"+c_date[1]+"-"+c_date[2];

          isss +=" "+ c_time[0]+":"+c_time[1]+":"+c_time[2]+"<br>";
          document.getElementById("time_test").innerHTML += isss;
          var sdate = new Date(c_date[0],c_date[1]-1,c_date[2],c_time[0],c_time[1],c_time[2]);
          sdate.setSeconds(sdate.getSeconds()+1);
          c_date[0]=sdate.getFullYear();
          c_date[1]=sdate.getMonth()+1;
          c_date[2]=sdate.getDate();
          c_time[0]=sdate.getHours();
          c_time[1]=sdate.getMinutes();
          c_time[2]=sdate.getSeconds();
          var ww="";
          switch(sdate.getDay()){
               case 0 : ww = "日"; break;
               case 1 : ww = "月"; break;
               case 2 : ww = "火"; break;
               case 3 : ww = "水"; break;
               case 4 : ww = "木"; break;
               case 5 : ww = "金"; break;
               case 6 : ww = "土"; break;
          }
          var yy =  c_date[0];
          var mm = c_date[1]<10 ? "0"+c_date[1] : c_date[1];
          var dd = c_date[2]<10 ? "0"+c_date[2] : c_date[2];
          var h = c_time[0]<10 ? "0"+c_time[0] : c_time[0];
          var m = c_time[1]<10 ? "0"+c_time[1] : c_time[1];
          var s = c_time[2]<10 ? "0"+c_time[2] : c_time[2];
 

          time_set = "Seoul : "+yy+"/"+mm+"/"+dd+"("+ww+") "+h+':'+m+':'+s;
          return time_set;
     }
     function set_Time(){
          var time_txt = document.getElementById("time_area");
          time_txt.innerHTML = getTime() ;
        oop = setTimeout("set_Time()", 1000);
     }

     //-->
</script>

<hr>
<div id=time_area><?=date("Y-m-d H:i:s",strtotime("+15hour"))?></div>
<a href='#' title='' onclick="clearTimeout(oop)">중지</a>
<hr>
<div >최초시간 : <?=date("Y-m-d H:i:s")?></div>
<div id=time_test></div>
</body>
</html>


댓글