上周开始于:2019年5月13日(星期一)至2019年5月19日(星期日)本周开始于:2019年5月20日(星期一)至2019年5月26日(星期日)在数据库中,我有这样的记录:task_id c_date1 2019-05-142 2019-05-16 3 2019-05-134 2019-05-175 2019-05-196 2019-05-217 2019-05-238 2019-05-249 2019-05-24例外输出将类似于上周的 1,2,3,4,5 记录我试过的:(方法一) $dt = new DateTime; $dt->setISODate($dt->format('o'), $dt->format('W') - 1); $year = $dt->format('o'); $week = $dt->format('W'); $this_week = array(); do { echo '<span>' . $dt->format('l') . " " . $dt->format('d M Y') . "</span></br>\n"; // $date_sheet = $dt->format('Y-m-d'); // array_push($this_week, $date_sheet); $dt->modify('+1 day'); } while ($week == $dt->format('W'));输出:Monday 13 May 2019Tuesday 14 May 2019Wednesday 15 May 2019Thursday 16 May 2019Friday 17 May 2019Saturday 18 May 2019Sunday 19 May 2019 我更喜欢这个,但问题是我无法弄清楚如何从数据库中从这种方法中获取记录,所以我试图找到替代方案,我认为它好多了,但不知道如何做到这一点
1 回答
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
你可以使用类似的东西(警告没有检查错误):
$dtFrom = new DateTime; // get current date
$dtTo = new DateTime;
// format for previous week (no previous year check)
$dtFrom->setISODate($dtFrom->format('o'), $dtFrom->format('W') - 1);
// do the same for end date range
$dtTo->setISODate($dtTo->format('o'), $dtTo->format('W') );
// subtract 1 day
$dtTo->sub(new DateInterval('P1D') );
// convert to iso date for database use
$dFrom = $dtFrom->format('y-m-d');
$dTo = $dtTo->format('y-m-d');
$dFrom 和 $dTo 是可以在查询中使用的日期格式
SELECT * FROM mytable WHERE DateRange between $dFrom AND $dTo;
- 1 回答
- 0 关注
- 242 浏览
添加回答
举报
0/150
提交
取消