Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 本周包含当月的最后一个星期五_Php - Fatal编程技术网

Php 本周包含当月的最后一个星期五

Php 本周包含当月的最后一个星期五,php,Php,我正在尝试创建一个脚本,如果一个月的最后一个星期五在本周内,它将更改页面上的图像。例如,如果我在一周中的任何一天(周一到周日),其中包含一周中的最后一个星期五,我将获得与本月其余时间不同的输出 我在前面的一个问题上得到了这段代码的帮助,但它只有在一个月的最后一天是今天时才起作用。但是,我需要该功能来了解一个月的最后一天是否在周一、周二、周三、周四,因为我的一周从周一到周日: // Be sure to check your timezone `date_default_timezone_set`

我正在尝试创建一个脚本,如果一个月的最后一个星期五在本周内,它将更改页面上的图像。例如,如果我在一周中的任何一天(周一到周日),其中包含一周中的最后一个星期五,我将获得与本月其余时间不同的输出

我在前面的一个问题上得到了这段代码的帮助,但它只有在一个月的最后一天是今天时才起作用。但是,我需要该功能来了解一个月的最后一天是否在周一、周二、周三、周四,因为我的一周从周一到周日:

// Be sure to check your timezone `date_default_timezone_set`
$today       = new DateTime();
$last_friday = new DateTime('last Friday of this month');

// For testing
$friday_april = new DateTime('2014-4-25');

if ($today->format('Y-m-d') === $last_friday->format('Y-m-d')) {
  print 'Today is friday';
}

if ($friday_april->format('Y-m-d') === $last_friday->format('Y-m-d')) {
  print 'Yes, a test friday is also a friday';
}

任何帮助都会很好

您需要一个循环。通过循环,增加一天,直到下个月。数一数从今天到下个月初你会遇到多少个星期五(包括今天)。如果只有1,那么最后一个星期五就在本周。

您需要一个循环。通过循环,增加一天,直到下个月。数一数从今天到下个月初你会遇到多少个星期五(包括今天)。如果它只有1,那么最后一个星期五就是本周。

使用
strotime
date
,因此它应该是这样的:

$today       = new DateTime();
$last_friday = strtotime('last Friday of this month');
// For testing
$friday_april = new DateTime('2014-4-25');

if ($today->format('Y-m-d') === date('Y-m-d', $last_friday)) {
  print 'Today is friday';
}

if ($friday_april->format('Y-m-d') === date('Y-m-d', $last_friday)) {
  print 'Yes, a test friday is also a friday';
}

使用
strotime
date
使其看起来像这样:

$today       = new DateTime();
$last_friday = strtotime('last Friday of this month');
// For testing
$friday_april = new DateTime('2014-4-25');

if ($today->format('Y-m-d') === date('Y-m-d', $last_friday)) {
  print 'Today is friday';
}

if ($friday_april->format('Y-m-d') === date('Y-m-d', $last_friday)) {
  print 'Yes, a test friday is also a friday';
}
$today=getdate();
$weekStartDate=$today['mday']-$today['wday'];
$weekEndDate=$today['mday']-$today['wday']+6;
回显“周开始日期:”.$weekStartDate;
回声“
”; 回音“周末日期:”.$weekEndDate;
通过这段代码,您可以获得当前一周的开始和结束日期

$today=getdate();
$weekStartDate=$today['mday']-$today['wday'];
$weekEndDate=$today['mday']-$today['wday']+6;
回显“周开始日期:”.$weekStartDate;
回声“
”; 回音“周末日期:”.$weekEndDate;

通过这段代码,您可以获得当前一周的开始和结束日期

更改比较的日期格式

W
就足够了

为什么

因为同样的字符串(the)将在同一周内(从周一开始)为日期生成

考虑到2014年4月这个月,包含最后一个星期五的周数为
17

2014-04-19 Sat => 16 ✗
2014-04-20 Sun => 16 ✗
2014-04-21 Mon => 17 ✓
2014-04-22 Tue => 17 ✓
2014-04-23 Wed => 17 ✓
2014-04-24 Thu => 17 ✓
2014-04-25 Fri => 17 ✓
2014-04-26 Sat => 17 ✓
2014-04-27 Sun => 17 ✓
2014-04-28 Mon => 18 ✗
2014-04-29 Tue => 18 ✗
2014-04-30 Wed => 18 ✗
摘要

if ($today->format('W') === $last_friday->format('W')) {
    // Do victory dance
}

更改比较的日期格式

W
就足够了

为什么

因为同样的字符串(the)将在同一周内(从周一开始)为日期生成

考虑到2014年4月这个月,包含最后一个星期五的周数为
17

2014-04-19 Sat => 16 ✗
2014-04-20 Sun => 16 ✗
2014-04-21 Mon => 17 ✓
2014-04-22 Tue => 17 ✓
2014-04-23 Wed => 17 ✓
2014-04-24 Thu => 17 ✓
2014-04-25 Fri => 17 ✓
2014-04-26 Sat => 17 ✓
2014-04-27 Sun => 17 ✓
2014-04-28 Mon => 18 ✗
2014-04-29 Tue => 18 ✗
2014-04-30 Wed => 18 ✗
摘要

if ($today->format('W') === $last_friday->format('W')) {
    // Do victory dance
}
$Thisweekhasatfridayofmonth=函数(){
$lastFridayThisMonth=日期('Y-m-d',标准时间('本月最后一个星期五');
$testDate=date('Y-m-d',strottime('today');
$thisWeekSunday=(date('N',strotime('testDate))!=1?date('Y-m-d',strotime('last Sunday'):date('Y-m-d');
$thisweekstathday=(日期('N',strotime('testDate))!=7?日期('Y-m-d',strotime('next周六'):日期('Y-m-d');
//echo$lastFridayThisMonth.“
”.$thisWeekSunday.“
”.$thisWeekSaturday; 如果(实时时间($lastFridayThisMonth)>=实时时间($thisWeekSunday)&& strtotime($lastFridayThisMonth)
$ThisWeekSlastFridayOfMonth=函数(){
$lastFridayThisMonth=日期('Y-m-d',标准时间('本月最后一个星期五');
$testDate=date('Y-m-d',strottime('today');
$thisWeekSunday=(date('N',strotime('testDate))!=1?date('Y-m-d',strotime('last Sunday'):date('Y-m-d');
$thisweekstathday=(日期('N',strotime('testDate))!=7?日期('Y-m-d',strotime('next周六'):日期('Y-m-d');
//echo$lastFridayThisMonth.“
”.$thisWeekSunday.“
”.$thisWeekSaturday; 如果(实时时间($lastFridayThisMonth)>=实时时间($thisWeekSunday)&&
STROTIME($LASTFRIDAYSISMONT)
date('N',STROTIME('本月最后一天'))
会给你一个1(星期一)->7(星期日)天的值。从这里很容易计算出前一个星期五有多远。对不起,我不明白,也许我看起来逻辑性不够:(好的。2014年4月的最后一天是30日,也就是星期三。
date('N'))
将返回3。如果最后一天是星期五,date('N'将返回5。
3<5
是真的,因此您需要返回到上一个星期五:星期三->星期五(时光倒流)是5天:3(星期三)->2(星期二)->1(星期一)->0(星期日)->1(星期六)->2(星期五)因此,4月30日减去5天就是4月25日,这是4月的最后一个星期五。同样的计算方法也适用于未来。
date('N',strotime('s last day of thin month')
会给你一个1(周一)->7(周日)日期值。从这里可以很容易地计算出上一个星期五的时间。对不起,我不明白,也许我看起来不够逻辑:(好的。2014年4月的最后一天=30日,也就是星期三。
date('N')
将返回3。如果最后一天是星期五,日期('N'将返回一个5。
3<5
是真的,因此您需要返回到上一个星期五:星期三->星期五(时光倒流)是5天:3(星期三)->2(星期二)->1(星期一)->0(星期日)->1(星期六)->2(星期五)所以4月30日减去5天就是4月25日,这是你4月的最后一个星期五。同样的数学也适用于未来。哪里是研究循环的最佳地点,因为我以前从未遇到过。是的,我没有机会在短时间内学会如何做,但谢谢你-不是因为不努力!哪里是最好的地点我以前从来没有遇到过制作循环的问题。是的,我没有机会在短时间内学会如何制作循环,但谢谢你——这并不是因为我没有尝试过,这很难!@JosephGregory你到底想做什么?如果你结账,你会在周一到周日看到一条横幅,但在这个月的最后一个周五会看到一个不同的事件从一个正常的周五开始,所以我需要新的,甚至从周一开始显示,这个月的最后一个周五已经开始了