PHP检查3次计数是否晚于(日期)(周期1-7)

PHP检查3次计数是否晚于(日期)(周期1-7),php,math,base,Php,Math,Base,我目前正在制作一个系统,需要知道某个变量是否在3天前存储,如果存储了,则返回true。最初保存变量时,它被设置为日期('N'),即一周中的某一天,采用数字格式。(根据php文档,1=周一,7=周日) 然而,我怎么知道已经过了3天或更长时间?我的主要困境是:如果变量是第5天,而当前是第4天,这意味着1周的周期几乎完成了(已经过去了6天)-但是我不知道如何在php中实现这一点。另一个例子是变量是第7天,目前是第1天-从数字上讲,包括两个值之间有6“天”,但实际上,7之后只有一天是1 另外,我每周都会

我目前正在制作一个系统,需要知道某个变量是否在3天前存储,如果存储了,则返回true。最初保存变量时,它被设置为日期('N'),即一周中的某一天,采用数字格式。(根据php文档,1=周一,7=周日)

然而,我怎么知道已经过了3天或更长时间?我的主要困境是:如果变量是第5天,而当前是第4天,这意味着1周的周期几乎完成了(已经过去了6天)-但是我不知道如何在php中实现这一点。另一个例子是变量是第7天,目前是第1天-从数字上讲,包括两个值之间有6“天”,但实际上,7之后只有一天是1


另外,我每周都会重置这些值,这就是为什么我不费心保存月份或年份之类的内容。

假设您将日期保存为字符串,一种方法是使用历元时间:

echo time();  //1403218504
您看到的最大数字是自1970年1月1日以来的秒数

一天有3600*24秒。因此,当您在大纪元时间中保存“变量”的日期,以查看它是否在3天前,您可以执行以下操作:

$one_day = 3600*24;

$now = time();
$before = $your_old_time;

if ($now - $before > ($one_day * 3)) {
  //$before is older than 3 days
}

这实际上可以在当前状态下借助数学来解决。让我们先来看看好值和坏值

  • 存储在
    1
    :良好:2、3、4错误:1、5、6、7
  • 存储在
    2
    上:好:3、4、5坏:1、2、6、7
  • 存储在
    6
    :良好:7,1,2错误:3,4,5,6
  • 存储在
    7
    上:好:1、2、3坏:4、5、6、7
如果从当前值中减去存储值,您将看到标准情况下的
good-stored=1、2或3(无重叠)和
good-stored=-6、-5、-4(最大重叠)

同时
bad-storaged=4、5、6或0(无重叠)和
bad-storaged=-3、-2、-1或0(最大重叠)

因此,您希望结果在[1,3]或[-6,-4]之间,可以这样做

//somwhere $storedN is defined
$todayN = date('N');
$result = $todayN - $storedN;
if (($result > 0 && $result < 4) || ($result > -7 && $result < -3)) {
//            no overlap                        overlap
    // valid
}
//定义$storedN的地方
$todayN=日期('N');
$result=$todayN-$storedN;
如果($result>0&&$result<4)| |($result>-7&&$result<-3)){
//无重叠
//有效的
}

你能不能把它哑成一个日期时间,然后比较一下?类似于
newdatetime(date('Y')。“-”.date('m')。“-”$yourdate.00:00”)然后只区分它们?或者使用unix时间戳。如果差值大于3(天)*24(小时/天)*3600(秒/小时),则。。。这使得数学变得非常简单(所有整数)。这是一个非常简单的数学。你能至少展示一下你迄今为止所做的尝试吗?