我想根据浏览器的时间将不同的CSS表格应用到我的网站。例如,如果是白天的时间,则显示day.css或night.css for night。
我可以使用PHP执行此操作,但它基于服务器时间,而不是浏览器本地时间。
有没有办法在javascript中告诉时间?我可能会使用jQuery简单地在css完成后启动它。
答案 0 :(得分:23)
var hr = (new Date()).getHours(); //get hours of the day in 24Hr format (0-23)
根据您对日/夜的定义,执行您的魔法:)
PS:如果您的日/夜不是在确切时间开始,您可以尝试getMinutes()
。
答案 1 :(得分:3)
我使用这个逻辑:
const hours = new Date().getHours()
const isDayTime = hours > 6 && hours < 20
答案 2 :(得分:2)
(new Date).getHours()
将获取客户端的当地时间(0-23)。根据该值,交换页面的样式表。我会将日期样式表设置为默认值,并在必要时将其换出。
我最初的想法是,您希望在客户端上尽快执行此操作,以避免任何potential browser reflow。
答案 3 :(得分:0)
要执行此操作,您需要知道客户的位置,当地的日出和日落时间以及一年中的某一天。全年只有赤道位置的日照时间几乎恒定为12小时。
StackOverflow上的另一个答案提供了一个很好的答案:
答案 4 :(得分:0)
有趣的问题。我想尝试一下,并提出与迄今为止建议的完全不同的东西。这就是我得到的:
function isDay() {
return (Date.now() + 60000 * new Date().getTimezoneOffset() + 21600000) % 86400000 / 3600000 > 12;
}
如果在上午6点到下午6点之间返回true,否则返回false。
分为几部分:
Date.now()
以毫秒为单位返回UTC时期; new Date().getTimezoneOffset()
以分钟为单位获取本地时区,而60000
则将其转换为毫秒; X % 86400000
将返回自当天开始以来已过去的毫秒数;由于我们在上一步中增加了6个小时,因此实际上是从6 AM开始计算毫秒数。当然,可以通过以下方式实现同样的目标:
function isDay() {
const hours = (new Date()).getHours();
return (hours >= 6 && hours < 18);
}
但是,这甚至还不及一半:-D