我正在使用 cron job 来生成关于我的数据库的每周报告。基本上,报告生成脚本是PHP。我安排了每日一次的cron工作。
我的报告周将于周日开始。
我只希望报告生成脚本生成报告,从上周日到上周一的前一周。
以p为例。今天是2013年3月4日。当脚本运行时,它应该生成 2013年2月24日至2013年3月3日的报告。明天,当剧本 它应该只运行2013年2月24日至2013年3月3日的报告。
如何在我的脚本中自动获取最后星期天的日期?
目前,我使用以下代码进行硬编码:
$startDate = strtotime("13 January 2013");
$strStartDate = date ("Y-m-d 00:00:00", $startDate);
$strEndDate = date ("Y-m-d 23:59:00", $startDate + (6*24*60*60));
非常感谢任何帮助。谢谢。
答案 0 :(得分:20)
上周日
echo date('Y-m-d',strtotime('last sunday'));
编辑答案:
上周日的上周日
echo date('Y-m-d',strtotime('last sunday -7 days'));
答案 1 :(得分:3)
老实说,我不确定is it possible using function?
的意思,但我想你想要一个通用函数,但我认为一个简单的类也可以做到这一点。
<强>观察强>
它也应该只运行2013年2月24日至2013年3月3日的报告。
请注意,从Sunday 24 Feb 2013
到Sunday 3 March 2013
8 days
且1 weeks
以上可能会导致overlapping
数据,如果您正在绘制图形或使用它用于分析。我建议您将其限制在1 weeks
Sunday, 24 Feb 2013
到Saturday, 2 March 2013
这就是我的意思
// imagine today is Today is 4 March 2013
$today = DateTime::createFromFormat("d F Y", "4 March 2013");
$date = new PeroidDate();
vprintf("%s to %s", $date->getPeroid($today));
输出
Sunday, 24 February 2013 to Saturday, 02 March 2013
示例1
// Example
$date = new PeroidDate();
print_r($date->getPeroid());
输出
stdClass Object
(
[start] => Sunday, 31 March 2013
[end] => Saturday, 06 April 2013
)
//or
Sunday, 31 March 2013
示例2
让我们想象一下,您希望获得“{1}}的报告,即”2月14日之前“
before valentine period
输出
print_r($date->getPeroid(new DateTime("2013-02-14")));
示例3
让我们想象你想要一个日期范围而不是一个范围,例如。您希望stdClass Object
(
[start] => Sunday, 03 February 2013
[end] => Saturday, 09 February 2013
)
st 和January 1
之间的日期(可能您想将其用于选择框),然后使用{{1 }}
Current Time
输出
PeroidDate::getBetween
print_r($date->getBetween(new DateTime("2013-1-1"), new DateTime()));
答案 2 :(得分:3)
<?php
$date=date("Y-m-d");
echo "Current Date : ".$date."<br>";
echo "last Sunday : ".date('Y-m-d', strtotime($date.'last sunday'));
?>
答案 3 :(得分:1)
使用此代码。
echo date('m/d/Y', strtotime('last Sunday'));
你可以按照今天的上周日获得。
答案 4 :(得分:1)
试试这个
$sun = date('Y-m-d',strtotime('last sunday'));
echo date('Y-m-d', strtotime('last Sunday', strtotime($sun)));
它将返回2013-02-24
答案 5 :(得分:1)
由于此问题也标记为MySql,如果您需要在查询中计算间隔,可以使用以下内容:
SELECT
'2013-03-04' - INTERVAL (WEEKDAY('2013-03-04')+1) % 7 DAY - INTERVAL 1 WEEK start_date,
'2013-03-04' - INTERVAL (WEEKDAY('2013-03-04')+1) % 7 DAY end_date
然后要生成报告,您只需使用CURDATE():
SELECT *
FROM your_tables
WHERE ... AND
report_date BETWEEN
CURDATE() - INTERVAL (WEEKDAY(CURDATE())+1) % 7 DAY - INTERVAL 1 WEEK
AND CURDATE() - INTERVAL (WEEKDAY(CURDATE())+1) % 7 DAY