PHP+jQuery根据服务器时间更改后台


PHP + jQuery change background based on server time

我有一个基于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();
}
});

有线索吗?

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

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");
}
}

问题出在serverdate.getDay();上;。

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

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

您应该了解JavaScript 中的日期对象

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