javascript - 计算日落和日出时间后确定白天还是晚上

标签 javascript jquery

我已经根据用户位置成功计算了日出和日落时间,并将小时和分钟存储在数组中。因此,小时是第零个元素,分钟是第一个元素,如下所示 var sunrise = [09, 23];var Sunset = [20, 49];

我想做的是在黎明时做一些事情,然后在白天做一些单独的事情,然后在黄昏时做一些单独的事情,然后在晚上做一些单独的事情。这么说吧,现在我想提醒一下现在是一天中的哪一段时间。

我将黎明定义为日出前 1 小时到日出后 1 小时。白天是黎明和黄昏之间的一天。黄昏为日落前 1 小时至日落后 1 小时。夜晚是指黄昏和黎明之间,或者更简单地说是其他任何东西。

我尝试使用下面的 if 语句来执行此操作,但即使日出和日落正确,它也会说现在是夜间黄昏。

if(hours>(sunset[0]-1) && (hours<=sunset[0]+1 && minutes<=sunset[1])){
    alert("dusk");
}
else if(hours>(sunrise[0]-1) && (hours<=sunrise[0]+1 && minutes<=sunrise[1])){
    alert("dawn");
}
else if((hours>sunrise[0]+1 || (hours===sunrise[0]+1 && minutes>sunrise[1])) && (hours<sunset[0]-1) || (hours===sunset[0]-1 && minutes<sunset[1])){
    alert("day");
}
else if(hours>sunset[0]+1 || (hours === sunset[0]+1 && minutes>sunset[1]) && (hours<sunrise[1]-1 || (hours===sunrise[1]-1 && minutres<sunrise[1]))){
    alert("night");
}
else{
    alert("night"); 
}

最佳答案

我认为,您应该将时间转换为分钟,如下所示:

var sunrise_m = sunrise[0] * 60 + sunrise[1]

然后测试您的条件:

var sunrise = [09, 23]
var sunset = [20, 49]

var sunrise_m = sunrise[0] * 60 + sunrise[1]
var sunset_m = sunset[0] * 60 + sunset[1]

var now = new Date()
var now_m = now.getHours() * 60 + now.getMinutes()

if (now_m > sunset_m - 60 && now_m <= sunset_m + 60) {
    alert("dusk")
} else if (now_m > sunrise_m - 60 && now_m <= sunrise_m + 60) {
    alert("dawn")
} else if (now_m > sunrise_m + 60 && now_m <= sunset_m - 60) {
    alert("day")
} else {
    alert("night")
}

http://jsfiddle.net/12m8ty2y/

关于javascript - 计算日落和日出时间后确定白天还是晚上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25349902/

相关文章:

javascript - 查看 Angular 中的更新问题

jquery - 在用户输入时突出显示 d3.js 元素的选择

jquery - 点击播放匹配元素的视频点击

javascript 菜单 redfin 滚动

jquery - 星级评分系统在点击时保存值(value),仅将值(value)保存在数据库中

javascript - 如何使用 jquery 为 slider 创建缩略图

javascript - jquery 从给定日期查找前 12 个月的日期

javascript - lodash - chop 函数返回错误结果

javascript - 公开 Javascript 文件

javascript - 在 ASP.Net MVC 中使用成员资格会引发异常