用户最多可在一天内发布4次。
困难在于如何在数据库中获得一天的开始?我正在使用MySQL
答案 0 :(得分:2)
如果存储他的TimeZone会更好。世界不同地区的人有不同的时间,所以每一天的开始都会有所不同。
您可以获取当前日期和当前时间。检查在这一天{1}}开始的帖子数量。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()
- 获取当前日期CURTIME()
- 获取当前时间CONVERT_TZ
- 从一个时区转换为另一个时区如何在数据库中获取当天的开始
这应该不是问题,正如我所说,从DB获取当前时间,调整时差以使时间UTC。然后调整用户的时区,按照他的时区制作时间。
e.g。 3:30
(服务器时间) - 1:00
(服务器时区)+ 5:30
(用户的时区)= 8:00
(用户的时间)
因此,此用户的当天开始时间是00:00,此用户已经过了8小时。
N.B:照顾时差。例如2:30
- 3:30
= -1:00
,这意味着前一天23:00
。考虑到这一点。
答案 1 :(得分:1)
这将获得基于今天的记录:
SELECT * FROM whatever WHERE date(datefield) = CURdate();
答案 2 :(得分:0)
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:
deny
答案 3 :(得分:0)
为什么不在24小时滚动期间限制4个帖子?也就是说,第四个最老的岗位应该比最近的岗位多出24小时。