PHP + jQuery根据服务器时间更改背景

时间:2012-09-07 10:24:35

标签: php jquery

我有一个基于Apache的服务器,它目前托管我的PHP + HTML5应用程序。我写了一个jquery脚本,如果满足服务器时间的某些条件,它应该改变特定div的背景图像。问题是 - 脚本无效:)。

我已经在这里解决了一些问题,并尝试修复脚本,但这些没有帮助,因为它们与我的问题并不完全相关。

好的,这是脚本:

$(document).ready(function () {

var serverdate = new Date("<?php echo date('l,g,i,s'); ?>");
var currentTime = serverdate.getTime();
var gameTime = getTimeFromString("8:45 pm");
var endTime = getTimeFromString("11:45 pm");
var currentDay = serverdate.getDay();
var weekday=new Array(7);
weekday[0]="Sunday";
weekday[1]="Monday";
weekday[2]="Tuesday";
weekday[3]="Wednesday";
weekday[4]="Thursday";
weekday[5]="Friday";
weekday[6]="Saturday";
    if (currentDay === "Tuesday" || currentDay ==="Wednesday"){
    if (currentTime<gameTime) {
    $('#bodymain').addClass('day').removeClass('game');
    }

else if (currentTime>endTime) {
    $('#bodymain').addClass('day').removeClass('game');
}

else {
    $('#bodymain').addClass('game').removeClass('day');
}
}
else {
$('#bodymain').addClass('day').removeClass('game');
}

function getTimeFromString(timeString){
var theTime = new Date();
var time = timeString.match(/(\d+)(?::(\d\d))?\s*(p?)/);
theTime.setHours(parseInt(time[1])+(time[3]?12:0));
theTime.setMinutes(parseInt(time[2]) || 0);
return theTime.getTime();
}

});

任何线索?

3 个答案:

答案 0 :(得分:1)

我决定根据您的输入使用不同的方法。现在一切都完美无瑕。这是最终的解决方案(我必须等到我能回答我自己的问题):

PHP文件:

 <?php
$current_time = strtotime('now');
if ($current_time > strtotime('tuesday this week 8:45pm') && $current_time < strtotime('tuesday this week 11:45pm')) {
 $background = 1;
}
else if ($current_time > strtotime('wednesday this week 8:45pm') && $current_time < strtotime('wednesday this week 11:45pm')) {
 $background = 1;
}
else{
$background = 0;
}

?>

<script>
var backday = <?php echo json_encode($background); ?>;
</script>

JS文件:

$(document).ready(function () {
createBackground()

});

function createBackground(){

if (backday === 0) {
$('#bodymain').addClass('day').removeClass('game');
}
else if (backday === 1) {
$('#bodymain').addClass('game').removeClass('day');
}
else {
alert("Background error");

}
}

答案 1 :(得分:0)

问题在于serverdate.getDay();

Date.getDay();返回0-6天,而不是当天的名字。

和serverdate.getTime(); return总时间的毫秒数。

您应该了解JavaScript中的Date对象

答案 2 :(得分:0)

只需将currentDay替换为weekday[currentDay],因为您要与日期名称进行比较。这对你有用。