javascript日期问题

时间:2012-03-23 20:13:40

标签: javascript

我有一个js脚本,它根据页面上的本地时间开关图像检查用户的本地时间。 条件是一个图像应该从早上6点到下午6点显示,另一个图像应该从下午6点到早上6点显示。 一切正常,但午夜后条件无法正常工作,并且不会显示该期间的所选图像。 这是我的脚本:

 function SetHiddenVariable() {
     var localTime = new Date();
     var hour = localTime.getHours();
     var minute = localTime.getMinutes();
     var time = hour + ':' + minute;
     var suffix = "AM";

     if(hour >=12)
     {
         suffix = "PM";
         hour = hour - 12;
     }

     if(minute < 10)
     {
         minute = "0" + minute;
     }          

     var timeMorning = new Date("1/1/2012 06:00 AM");
     var timeEvening = new Date("1/1/2012 06:00 PM");
     var realTime = new Date("1/1/2012 " + time);
     var logo = document.getElementById('imgLogo');

     if (realTime < timeMorning && realTime > timeEvening) {
         if (logo == typeof ('undefined')) return;
         logo.src = 'Images/night.png';
     }        
 }

我知道如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

  • 更改timehour的值时,minute变量不会神奇地更新。将作业放在time变量之后 if-conditions。
  • 另外,不要忘记附加后缀:
  • 另一个问题:当使用document.getElementById找不到元素时,会返回null。您当前的支票存在缺陷:typeof ('undefined')会返回string,因此logo == typeof ('undefined')始终为假。将其替换为logo == null

代码:

function SetHiddenVariable() {
    var localTime = new Date();
    var hour = localTime.getHours();
    var minute = localTime.getMinutes();
    //var time = hour + ':' + minute;              // Removed here
    var suffix = "AM";
    if (hour >= 12) {
        suffix = "PM";
        hour = hour - 12;
    }
    if (minute < 10) {
        minute = "0" + minute;
    }
    var time = hour + ':' + minute + ' ' + suffix; // Placed here, added suffix
    var timeMorning = new Date("1/1/2012 06:00 AM");
    var timeEvening = new Date("1/1/2012 06:00 PM");
    var realTime = new Date("1/1/2012 " + time);
    var logo = document.getElementById('imgLogo');
    if (realTime < timeMorning && realTime > timeEvening) {
        if (logo == null) return;
        logo.src = 'Images/night.png';
    }
}

答案 1 :(得分:0)

也许我误解了你在这里想做什么,但是如果你只是想确定它是否是夜间(下午6点到早上6点之间)或不这样做,那么你会这样做:

var night = (new Date().getHours < 6 || new Date().getHours > 18);

如果是晚上,那么night === true如果不是night === false。然后你可以做你的图像替换逻辑。 E.g。

if (night) {
    logo.src = "night.png";
} else {
    logo.src = "day.png";
}