我已经有这个问题大约一个月了。我为我的公司建立了一个文案管理系统,以帮助减轻管理如此大项目的压力。系统按每周完成的项目向作者支付费用。由于工资限制,他们的支付期为周四上午 12:00 至周三上午 11:59。在作家的仪表板上,我显示了他们上周支付期间的总数,然后是他们本周所写的当前金额。
我正在使用 strtotime() 这样做:
$currentdate = date("Y-m-d");
$lastweekstart = date('Y-m-d', strtotime('2 thursdays ago'));
$lastweekend = date('Y-m-d', strtotime('last wednesday'));
$thisweekstart = date('Y-m-d', strtotime('last thursday'));
然后我从数据库中检索上周的记录:
mysqli_query($con, "SELECT * FROM table_name WHERE username='$username' AND date BETWEEN '$lastweekstart' AND '$lastweekend'");
和本周:
mysqli_query($con, "SELECT * FROM table_name WHERE username='$username' AND date BETWEEN '$thisweekstart' AND '$date'");
这在一周的大部分时间里都很有效,但在星期四它变得有点疯狂。所以我开始尝试更改 $thisweekstart 和 $lastweekstart 的日期,这些日期一直有效到星期五,然后它又变得疯狂了。所以,基本上,下面是我当前的代码,除了星期五之外每天都可以使用。
$lastweekstart = date('Y-m-d', strtotime('2 thursdays ago'));
$lastweekend = date('Y-m-d', strtotime('last wednesday'));
$thisweekstart = date('Y-m-d', strtotime('last thursday'));
if ($date == date('Y-m-d', strtotime('thursday'))) {
$thisweekstart = $date;
$lastweekstart = date('Y-m-d', strtotime('last thursday'));
} else {
if ($date == date('Y-m-d', strtotime('friday'))) {
$lastweekstart = date('Y-m-d', mktime(0,0,0,date("m"),date("d")-8,date("Y")));
}
}
// counts descriptions written last week
$lastcount = 0;
$result = mysqli_query($con, "SELECT * FROM table_name WHERE username='$username' AND date BETWEEN '$lastweekstart' AND '$lastweekend'");
$lastcount = mysqli_num_rows($result);
// counts descriptions written this week
if ($thisweekstart == $date) {
$result = mysqli_query($con, "SELECT * FROM table_name WHERE username='$username' AND date='$date'");
} else {
$result = mysqli_query($con, "SELECT * FROM table_name WHERE username='$username' AND date BETWEEN '$thisweekstart' AND '$date'");
}
$thiscount = mysqli_num_rows($result);
我对 PHP 还是很陌生,我的大脑在这个问题上被炒了。我需要焕然一新。你们(和女孩)怎么看?有没有比使用 strtotime() 更好的方法来处理几周?