我试图计算下一个星期一剩余的天数,它返回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";
}
答案 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)
您可以使用DateTime
和DateInterval
这样的对象:
$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(星期日)
$daysTillNextMonday = 7 - (date('N') - 1);