我正在创建一个网站,在那里我需要使用注册用户时区来确定他们是否可以根据他们在仪表板中设置的内容在特定日期接收电子邮件。
我想要解决的主要事情是,我希望在结果顶部显示那些现在可用的用户的选项,以节省人们不得不通过搜索页面的人来寻找谁是可用的。
我有一个粗略的想法,我可以用来显示/隐藏用户页面上的电子邮件表单的功能…它更多的是关于搜索页面上的查询,它将显示所有用户以及如何最好地对结果进行排序。
默认时区将为GMT。
因此,如果今天是星期一,并且以下用户的可用性设置为:
USER | timezone | availability_today | emails_received
1 | America/Los_Angeles | 2 | 1 (still available)
2 | America/New_York | 0 | 0 (not available)
3 | Europe/London | 1 | 1 (not available)我认为这更多的是我实际保存/访问的日期/时区的问题。在email表id中有一个DATE_SENT列,这样我就可以计算发送了多少电子邮件,以便与它们的可用性进行比较。但如果网站是格林尼治标准时间...如果用户在美国或澳大利亚,那就不是正确的时间。
就像我说的,它更多的是关于搜索页面上的select语句,我不能理解所有的时区。我的主机不支持CONVERT_TZ。
或者我只需在GMT中计算它?
我只是在问这个问题时很困惑,因为你正在读它,我敢肯定。希望有人能理解到这一点并提供建议。这可能不像我说的那样令人困惑。
编辑:-
问题是:
就说是周一格林尼治标准时间。在用户(而不是访客)国家/地区是星期二,他们的可用性设置为0。如果我在服务器上使用周一的格林尼治标准时间,那么一封电子邮件就会通过。而在周二(用户国家的Weds),他们就不会得到一个。
访问者无需注册即可查看搜索结果。如果他们想给用户发电子邮件,就需要这样做。用户页面足够简单,因为它处理一个转换。
发布于 2013-12-20 10:39:35
有几个选择。
(1)将GMT中的所有内容存储在datetime列中。您可以通过执行MySQL查询在您的端执行操作,例如
SELECT 'my date' - INTERVAL 5 HOUR(2)将所有内容存储在用户当前时区的时间戳列中。您可以通过执行以下查询来设置当前数据库连接的时区...
SET time_zone = 'Europe/London'查看当前时区
SELECT @@time_zone;将'Europe/London'替换为正确的时区。当MySQL使用时间戳时,它在内部以GMT存储数据。当您拉回数据时,MySQL会自动将时间转换回客户端当前设置的任何时区。
发布于 2013-12-20 10:48:12
https://stackoverflow.com/questions/20695261
复制相似问题