2011-05-03 45 views
1

我没有接触到php。这可能是w/jQuery吗? 这里是一个例子。 可以说,商家在上午11:00开始营业,并在7:00关门,希望现场聊天图像能够说'我们在线!'但是当他们关闭时,他们希望图像说'我们离线'。 这有帮助吗?如果有人有解决这个问题,请帮忙。谢谢。如何根据您的时区或当地时间确定显示的图像?

+0

我'使用@ConfinedSpace回复w /我喜欢它的这个脚本 - 它的直接和有用的。只有一个问题,你jQuery的,JavaScript的忍者 - 这是基于用户的时间? – Stuart 2011-05-03 22:53:59

+0

我该如何使用这个ID或类 - 所以当它的下午5:00图像上的ID或类更改为关闭。前者为 。 当它下午5:00时,#chat图像切换到close.jpg – Stuart 2011-05-03 23:53:05

回答

1

下面介绍如何使用中央标准时间作为服务器的时区来补偿其他时区:

http://jsfiddle.net/pxfunc/AcFhg/2/

的JavaScript/jQuery的:

// Translate your hours to UTC, example here is using Central Standard Time (-0500 UTC) 
// Opening hour in UTC is 16, Closing hour is 0 the next day 
var d = new Date(), 
    open = new Date(), 
    closed = new Date(); 

// Statically set UTC date for open 
open.setUTCHours(16); // Open time at 11:00 am CST which is 16:00 UTC 
open.setUTCMinutes(0); 
open.setUTCSeconds(0); 
open.setUTCMilliseconds(0); 

// Statically Set UTC date for closing 
closed.setUTCDate(d.getUTCDate()+1); // UTC time rotates back to 0 so we add a day 
closed.setUTCHours(0); // Closing time at 7:00 pm CST which is 00:00 UTC (so we need to add a day) 
closed.setUTCMinutes(0); 
closed.setUTCSeconds(0); 
closed.setUTCMilliseconds(0); 

// Debugging 
console.log("user's date:" + d); 
console.log("store open time in user's timezone:" + open); 
console.log("store close time in user's timezone:" + closed); 
console.log(d > open); // user's time is greater than opening time 
console.log(d < closed); // is user's time less than closing time (you don't have to go home...) 

// Test for store open? 
if (d > open && d < closed) { 
    setOpenStatus(true); 
} 
else { 
    setOpenStatus(false); 
} 

function setOpenStatus(isOpen) { 
    $('#open').toggle(isOpen); 
    $('#closed').toggle(!isOpen); 
} 

注:这将是非常困难的,为世界各地的各种夏令时的变化完全弥补,但这会在大多数情况下

+0

甜!这太棒了!因此,让我们说他们想要开放 - 星期一到星期五上午9点至下午5点在太平洋时区,星期六和星期日关闭?这可能使用上面的脚本? – Stuart 2011-05-04 02:01:08

+0

使用Date对象的[getDay()](http://www.w3schools.com/jsref/jsref_getday.asp)方法,将if改为if(d.getDay()!== 0 && d)。 getDay()!== 6 &&(d> open && d MikeM 2011-05-04 03:14:40

+0

您有一个电子邮件地址,我可以直接与您联系吗?我感谢您的帮助!我试着实现你的建议,但是我很难试着让它工作,因为我不熟悉JS语法。 – Stuart 2011-05-04 12:17:16

2

你可以使用Date对象和datejs简化日期的操作像解析获取客户端的日期,...

+0

如果服务器和客户端与业务都位于同一时区,那么这不仅仅是真正有用和正确吗? – RwwL 2011-05-03 22:17:42

+0

@RwL:显然你会把商业开放时间存储在w.r.t.给定的时区。 – 2011-05-03 22:21:29

+0

是的,我可以看到,但我在想(因为我在美国),如果你这样做,你在夏令时期间仍然会休息一小时,不是吗?我不明白UTC的时间(但是,关闭维基百科我去),所以我没有看到如何在发布的解决方案占所有。 – RwwL 2011-05-04 14:13:20

1
var today = new Date(); 
var h  = today.getHours(); 
var m  = today.getMinutes(); 
var s  = today.getSeconds(); 

if ((h > 18) || (h < 11)) { 
    $(img).src('closed.jpg'); 
} 
+1

客户和业务处于不同时区时发生中断,并且您的条件可以_never_为真。你可能是指'||',而不是'&&'。 – 2011-05-03 22:22:38

+0

速度错误,的确是||。如果是本地业务,我认为时区不会成为问题。如果是,那么时区也应该清楚地考虑在内。 – haknick 2011-05-04 02:32:40

+0

什么是互联网上的“本地商业”? – 2011-05-04 08:46:14

0
<script type="text/javascript"> 
<!-- 
var objDate = new Date(); 
var hours = objDate.getHours(); 
var imgsrc = (hours > 11 && hours < 19) ? 'open.jpg' : 'close.jpg'; 
document.write('<img src="'+imgsrc+'" />'); 
//--> 
</script> 
+0

是基于用户的时区还是服务器? – Stuart 2011-05-03 22:32:35

+0

我会推荐你​​检查Date.js ...这是一个了不起的图书馆,你可以使用日期时使用:http://www.datejs.com/我知道这不是你要找的答案,但我*相信*你会发现这有用。 – 2011-05-03 22:35:30

+0

好吧 - 即时通讯不是一个JavaScript专家。但顶级脚本实际在做什么?它是基于用户的时间吗? – Stuart 2011-05-03 22:44:31

1

工作正如多人指出的那样,您在客户端计算机上执行的任何操作都将基于客户端时间,而不是实际的业务时间。

为什么不把图像放在页面上,不用担心改变页面上的任何内容,只需在业务打开或关闭时更改服务器上的图像?

+0

但我必须每天都这样做。这是我想要避免的。 – Stuart 2011-05-04 00:45:10

+0

@Stuart:你不能*自动化吗? – SamB 2011-05-04 21:24:04

+0

不知道,但上面的脚本工作 - 我很高兴它是如何写的。 – Stuart 2011-05-06 21:57:24

相关问题