자바스크립트 php 카운트다운 기념일 계산 KST(GMT+9)
예봄
3년 전
조회 2,567
카운트 다운을 이용해 기념일 계산을 하고자 하는데요.
9시간이 부족하게 뜨는 것이 아무래도 자바스크립트 자체 함수가 UTC/GMT 시간대를 쓰기 때문인 것 같은데
제가 js를 잘 몰라 어디를 건드려야할지 감이 오지 않습니다....
config.php 파일에서 서버 시간은 서울로 되어있는 상태입니다.
어느 코드를 어떻게 고쳐야할지 조언주실 수 있으실까요?
관련되어 보이는 php와 js 코드입니다.
</p>
<p><? for($i=0; $row = sql_fetch_array($result); $i++) { </p>
<p> $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']);
?></p>
<p>
script
</p>
<p>
<script>
function CountDownTimer(dt, id)
{
var end = new Date(dt);</p>
<p>var _second = 1000;
var _minute = _second * 60;
var _hour = _minute * 60;
var _day = _hour * 24;
var timer;</p>
<p>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);</p>
<p>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);
}
</p>
<p>CountDownTimer('<?=$timer?>', 'dday');
</script></p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
답변 2개
3년 전
</p>
<p><span class="token keyword keyword-var">var</span> end <span class="token operator">=</span> <span class="token keyword keyword-new">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span>dt<span class="token punctuation">)</span><span class="token punctuation">;</span></p>
<p><span class="token punctuation">window.status = end; //<---이렇게 해보면 시각이 어떻게 설정 되었는지 볼 수 있잖아요</span></p>
<p>즉</p>
<p> <span class="token variable">$timer</span> <span class="token operator">=</span> <span class="token function">str_replace</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'/'</span><span class="token punctuation">,</span><span class="token single-quoted-string string">'-'</span><span class="token punctuation">,</span><span class="token variable">$row</span><span class="token punctuation">[</span><span class="token single-quoted-string string">'co_date'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">; <--이게 잘못 되었다는것이죠</span></p>
<p>수정</p>
<p> <span class="token variable">$timer</span> <span class="token operator">=</span> <span class="token function">str_replace</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'/'</span><span class="token punctuation">,</span><span class="token single-quoted-string string">'-'</span><span class="token punctuation">,</span><span class="token variable">$row</span><span class="token punctuation">[</span><span class="token single-quoted-string string">'co_date'</span><span class="token punctuation">]</span><span class="token punctuation">).'T00:00:00'; //해당일자 0시부터 시작</span></p>
<p><span class="token punctuation">
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
�
예봄
3년 전
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
<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, ';
document.getElementById(id).innerHTML += hours + ':';
document.getElementById(id).innerHTML += minutes + ':';
document.getElementById(id).innerHTML += seconds;
}
showRemaining();
timer = setInterval(showRemaining, 1000);
}
CountDownTimer('<?=$timer?>', 'dday');
</script>
[/code]
로 수정을 해보았으나 여전히 하루하고 9시간이 모자라게 뜹니다ㅠㅠ 조금 더 구체적으로 설명해주실 수 있으실까요?