자바스크립트 php 카운트다운 기념일 계산 KST(GMT+9)

자바스크립트 php 카운트다운 기념일 계산 KST(GMT+9)

QA

자바스크립트 php 카운트다운 기념일 계산 KST(GMT+9)

본문

카운트 다운을 이용해 기념일 계산을 하고자 하는데요.

9시간이 부족하게 뜨는 것이 아무래도 자바스크립트 자체 함수가 UTC/GMT 시간대를 쓰기 때문인 것 같은데

제가 js를 잘 몰라 어디를 건드려야할지 감이 오지 않습니다.... 

config.php 파일에서 서버 시간은 서울로 되어있는 상태입니다.

어느 코드를 어떻게 고쳐야할지 조언주실 수 있으실까요?

관련되어 보이는 php와 js 코드입니다.

 


<? for($i=0; $row = sql_fetch_array($result); $i++) { 
            $h=date('H'); //현재시를 구함 
            $m=date('i'); //현재 분을 구함 
            $s=date('s'); //현재 초를 구함 
            $date=date("U",strtotime($row[co_date])); //생일의 유닉스타임스탬프를 구함 
            $today=time(); //현재의 유닉스타임스탬프를 구함 
            $day=($today-$date)/60/60/24; //몇일이지났는가를 계산
            $day=ceil($day);
 
 $timer = str_replace('/','-',$row['co_date']);
        ?>

 

script



<script>
function CountDownTimer(dt, id)
{
var end = new Date(dt);
var _second = 1000;
var _minute = _second * 60;
var _hour = _minute * 60;
var _day = _hour * 24;
var timer;
function showRemaining() {
var now = new Date();
var distance = now - end;
 
var days = Math.floor(distance / _day);
var hours = Math.floor((distance % _day) / _hour);
var minutes = Math.floor((distance % _hour) / _minute);
var seconds = Math.floor((distance % _minute) / _second);
document.getElementById(id).innerHTML = days + 'Day,  ';
document.getElementById(id).innerHTML += hours + ':';
document.getElementById(id).innerHTML += minutes + ':';
document.getElementById(id).innerHTML += seconds;
}
showRemaining(); 
timer = setInterval(showRemaining, 1000);
}
 
CountDownTimer('<?=$timer?>', 'dday');
</script>

이 질문에 댓글 쓰기 :

답변 2

https://ryusm.tistory.com/141

 

해당 블로그 참조해보세요


<script>
function CountDownTimer(dt, id)
{
var end = new Date(dt);

var _second = 1000;
var _minute = _second * 60;
var _hour = _minute * 60;
var _day = _hour * 24;
var timer;

function showRemaining() {
const now = new Date();
const utcNow = now.getTime() + (now.getTimezoneOffset() * 60 * 1000);
const koreaTimeDiff = 9 * 60 * 60 * 1000;
var koreaNow = new Date(utcNow + koreaTimeDiff);
var distance = koreaNow - end;
 
var days = Math.floor(distance / _day);
var hours = Math.floor((distance % _day) / _hour);
var minutes = Math.floor((distance % _hour) / _minute);
var seconds = Math.floor((distance % _minute) / _second);

document.getElementById(id).innerHTML = days + 'Day, &nbsp;';
document.getElementById(id).innerHTML += hours + ':';
document.getElementById(id).innerHTML += minutes + ':';
document.getElementById(id).innerHTML += seconds;
}
showRemaining(); 
timer = setInterval(showRemaining, 1000);
}
 

CountDownTimer('<?=$timer?>', 'dday');
</script>

로 수정을 해보았으나 여전히 하루하고 9시간이 모자라게 뜹니다ㅠㅠ 조금 더 구체적으로 설명해주실 수 있으실까요?


var end = new Date(dt);
window.status = end; //<---이렇게 해보면 시각이 어떻게 설정 되었는지 볼 수 있잖아요
즉
 $timer = str_replace('/','-',$row['co_date']); <--이게 잘못 되었다는것이죠
수정
 $timer = str_replace('/','-',$row['co_date']).'T00:00:00'; //해당일자 0시부터 시작

 

답변을 작성하시기 전에 로그인 해주세요.
전체 6
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT