我正在尝试查询上周四至周三的结果。
今天是第18天,这是星期日,以PHP术语表示的一周的第一天。我的代码无效,因为它在周日重新开始。我的IF语句不起作用,我的周修饰符(-1周)不起作用。每周应该从周四到周四,周三午夜结束。我得到的结果是今天的结果,但它应该回到最后一个星期四,减去-1周,并将结果拉到最后一个星期四。
应该在这些日期之间提取数据 2015-1-8至 2015年1月14日
但它正在从2015-1-15到2015-1-21而不是假设。
<div class="subtitle">Last Week (12AM Thur to 12AM Thur)</div>
<div class="totamt">$<?php
require_once 'wp-content/themes/azure-basic/connectvars.php';
$dbc = mysqli_connect(CDB_HOST, CDB_USER, CDB_PASSWORD, CDB_NAME);
/* Last Week */
$twoWeeksAgoStart = new DateTime("Thursday last week");
$twoWeeksAgoEnd = new DateTime("Wednesday");
$today = new DateTime("now");
$day = $today->format("1");
if ($day == "Sunday" || $day == "Monday" || $day == "Tuesday" || $day == "Wednesday") {
//This DOES NOT WORK from Sunday to Wednesday
$twoWeeksAgoStart->modify("- 1 week");
$twoWeeksAgoEnd->modify("- 1 week");
} else {
//This DOES actually works on Thursday through Saturday Night
$twoWeeksAgoStart->modify("+7 days");
$twoWeeksAgoEnd->modify("- 1 week");
}
$startdates = $twoWeeksAgoStart->format( 'Y-m-d' );
$enddates = $twoWeeksAgoEnd->format('Y-m-d');
$query = "SELECT SUM(amountoffeeearned) as totalamount FROM commissioninfo WHERE thedate BETWEEN '$startdates' AND '$enddates'";
$result = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($result);
?>
答案 0 :(得分:1)
我做了一些光测试,我相信这可能适合你:
if(date('N') == 4){
$startdates = date("Y-m-d", strtotime("last Thursday"));
$enddates = date("Y-m-d", strtotime("-1 day"));
}else{
$startdates = date("Y-m-d", strtotime("last Thursday -1 week"));
$enddates = date("Y-m-d", strtotime("last Thursday - 1 day"));
}
它检查今天是星期四,如果是,那么它使用“上周四”和当天-1天来获得一周。任何其他日子,它使用上周四 - 1周和上周四 - 1天来获得时间表。好像今天是23日星期五,在PHP的脑海中,上周四是前一天(第22天),上周四是上周四,也就是前一周的星期四。
希望这有效并且有所帮助!
答案 1 :(得分:0)
我没有彻底测试过,但值得一试。让我知道它是否有效:
$minus = (date('D') !== 'Thu') ? "-1 week" : "";// Thursday check
$startdates = date("Y-m-d", strtotime("$minus last Thursday"));
$enddates = date("Y-m-d", strtotime("last Wednesday"));
希望它有所帮助。