PHP日期返回到下一个星期一的错误天数

时间:2014-05-01 10:38:37

标签: php date

我试图计算下一个星期一剩余的天数,它返回10,我确定它错了,剩下的星期几是星期五是5,我做错了什么?

 if (isset($_POST['entry'])) {


  $email=mysql_real_escape_string($_POST['email']);
  $t_shirt=mysql_real_escape_string($_POST['t-shirt']);
  $today = date("m.d.Y");
  $next_monday = date("d, m, Y", strtotime('next monday'));
  $last_monday = date("d, m, Y", strtotime('last monday'));
  $today = date("d.m.Y");


  $select_current=mysql_query("SELECT * FROM entry_form WHERE email='$email'");
   if (mysql_num_rows($select_current) >= 1) {
   while ($row=mysql_fetch_array($select_current)) {

    $last_registered=$row['registered'];

    } 

    $diff = abs(strtotime($last_registered) - strtotime($last_monday));
    $years = floor($diff / (365*60*60*24));
    $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
    $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

    echo "$days";

     }

3 个答案:

答案 0 :(得分:1)

你让自己很难,已经在计算date_diff时问了这个问题:

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

 //get next monday date
 $mon_date = date_create("next monday");

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

 $int = intval($difference->format('%a'));
 echo $int;

答案 1 :(得分:1)

您可以使用DateTimeDateInterval这样的对象:

$d = new DateTime('today');
$lm = new DateTime('last monday');
$nm = new DateTime('next monday');

echo $d->diff($lm)->format("%R%a"); // output -3
echo $d->diff($nm)->format("%R%a"); // output +4

这实际上是bart's answer的面向对象版本。格式说明符中的%R给出+-%a给出天数。

答案 2 :(得分:0)

有一个更简单的方法可以计算出下周一的天数:使用date('N')

  
      
  • N:ISO-8601星期几的数字表示(在PHP 5.1.0中添加)
       1(星期一)至7(星期日)
  •   
     

http://php.net/date

$daysTillNextMonday = 7 - (date('N') - 1);