一个用户一天内最多只能发布4次。
困难的是如何在数据库中开始一天?我使用的是MySQL
发布于 2009-10-22 12:05:01
这将获得基于今天的记录:
SELECT * FROM whatever WHERE date(datefield) = CURdate();发布于 2009-10-22 12:18:00
如果你把他的TimeZone存储起来会更好。世界上不同地区的人们有不同的时间,所以一天的开始对每个人来说都是不同的。
您可以获取当前日期和当前时间。查看在这一特定的一天,从一天的00:00开始已经发布了多少帖子。如果数字等于4,则告诉用户他已达到最大限制。
使用NOW()获取当前日期和时间
mysql> SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2009-10-22 10:49:15 |
+---------------------+
1 row in set (0.00 sec)您必须知道您的服务器位于哪个时区,然后将时间设为UTC,然后添加/减去时间以获得用户的本地时间。
您可能想看看MySQL Data and time Reference
DATE() -获取当前dateCURTIME() -获取当前timeCONVERT_TZ -从一个时区转换为另一个如何在数据库中开始一天
这应该不是问题,就像我说的,从DB获取当前时间,调整您的时间差,使时间UTC。然后调整用户的时区,使时间与他的时区一致。
例如3:30(服务器时间)-1:00(服务器时区)+5:30(用户时区)= 8:00 (用户时间)
因此,此用户一天的开始时间为00:00,而此用户的时间为8小时。
注意:注意时差。例如2:30 - 3:30 = -1:00,意思是前一天的23:00。也要考虑到这一点。
发布于 2009-10-22 12:09:22
SELECT datetime FROM posts ORDER BY date LIMIT 3,1
if now - datetime >= 86400: // pick one
if datetime.datepartonly < today:
allow posting
else:
deny posting如果您确定MySQL服务器的时间设置正确:
SELECT COUNT(*) FROM posts WHERE DATE_SUB(NOW(), 1 day) <= datetime; // OR
SELECT COUNT(*) FROM posts WHERE CURRENT_DATE() <= datetime;
if count < 4:
allow
else:
denyhttps://stackoverflow.com/questions/1604951
复制相似问题