每7天只允许输入一次。 (每周一)

时间:2014-05-01 09:05:47

标签: php date

我有一个允许用户参加比赛的参赛表格。

我们每个星期一12.00午夜举行这个比赛。规则是如果用户已进入本周比赛,他们需要等待下周一再次进入比赛。

date_default_timezone_set('GMT');
$today = date("m.d.y H:i:s");
echo strtotime("last Monday");

这就是现在所做的我知道它没什么重要但我有两个问题:

  1. 为什么strtotime("last Monday");会返回1398643200

  2. 如何进行计算? (条目都有DATETIME字段。)

3 个答案:

答案 0 :(得分:1)

1398643200是上周一的UNIX时间戳,这是strtotime("")通常所做的事情。它返回一个时间戳。注意:您将获得每周上周一的其他时间戳。

您可以参考有关strtotime here的更多详情。

答案 1 :(得分:0)

您只需要为您的时间添加7天。请参阅下面的示例代码

$your_date  = "4/28/2014";
$your_date = strtotime($your_date);
$your_date = strtotime("+7 day", $your_date);
echo date('M d, Y', $your_date);

在确认用户是否参加比赛后,您需要向用户提供下一个星期一的日期吗?尝试使用此

echo date("M d, Y", strtotime('next monday'));

答案 2 :(得分:0)

试试这个:

//get today's timestamp
$date_now = date_create("today");

//get past timestamp that you want to compare with
$log_date = date_create($VALUE FROM YOUR DB LAST LOG  OR COMPETITION ENTRY);

//calculate date difference
$difference = date_diff($log_date,$date_now);

$int = intval($difference->format('%a'));
if($int > 6) {
    //6 days as user can enter again on the 7th day
    //let me in;
}else{
    //do not let me in;
}

您可以在官方文档中提及date_createdate_diff以获取更多信息。