为了账号安全,请及时绑定邮箱和手机立即绑定

在php中从当前日期获取从周一到周日开始的上周记录

在php中从当前日期获取从周一到周日开始的上周记录

PHP
小唯快跑啊 2021-07-06 13:18:48
上周开始于: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;


查看完整回答
反对 回复 2021-07-09
  • 1 回答
  • 0 关注
  • 242 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信