php 获得上周一的日期,从PHP中的当前日期获取从周一至周日开始的上周记录

上周开始于:

2019年5月13日(星期一)至2019年5月19日(星期日)

本周开始于:

2019年5月20日(星期一)至2019年5月26日(星期日)

在数据库中,我有这样的记录:

task_id c_date

1 2019-05-14

2 2019-05-16

3 2019-05-13

4 2019-05-17

5 2019-05-19

6 2019-05-21

7 2019-05-23

8 2019-05-24

9 2019-05-24

例外的输出将类似于上周的1,2,3,4,5记录

我尝试过的方法:(方法1)

$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 '' . $dt->format('l') . " " . $dt->format('d M Y') . "\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 2019

Tuesday 14 May 2019

Wednesday 15 May 2019

Thursday 16 May 2019

Friday 17 May 2019

Saturday 18 May 2019

Sunday 19 May 2019

我更喜欢这种方法,但是问题是我无法弄清楚如何从数据库的这种方法中获取记录,所以我试图找到替代方法,我认为它要好得多,但不知道该怎么做

替代方法(第二种):

$now =date("d-m-Y");

select * from tasks where `c_date` = DATE_SUB('.$now.', INTERVAL 7 DAY )

什么也没得到,我确定我完全以错误的方式做.

任何帮助表示赞赏.

解决方法:

您可以使用类似的方法(警告不要检查错误):

$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;

标签:sql,php,date

来源: https://codeday.me/bug/20191210/2104532.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值