我正在尝试创建一个脚本,如果当月的最后一个星期五是在当前周,则会更改页面上的图像。例如,如果我在一周中的任何一天(星期一到星期日)中包含该星期的最后一个星期五,那么我将获得与该月剩余时间不同的输出。
我在上一个问题中使用此代码获得了帮助,但只有在当月的最后一天才能使用。但是我需要这个函数来知道一个月的最后一天是星期一,星期二,星期三,星期四仍然是当周,因为我的星期从星期一到星期日:
// 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';
}
任何帮助都会很棒!
答案 0 :(得分:5)
更改比较的日期格式。
W
就足够了。
为什么?!
因为那时将在同一周(从星期一开始)的日期生成相同的字符串(ISO week number)。
鉴于本月,即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
}
答案 1 :(得分:0)
你需要一个循环。完成循环并添加一天,直到下个月。计算从今天到下个月开始你遇到的星期五(包括今天)。如果它只有1,那么最后一个星期五是在本周。
答案 2 :(得分:0)
使用strtotime
和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';
}
答案 3 :(得分:0)
$today = getdate();
$weekStartDate = $today['mday'] - $today['wday'];
$weekEndDate = $today['mday'] - $today['wday']+6;
echo "week start date:".$weekStartDate;
echo "<br/>";
echo "week end date:".$weekEndDate;
通过此代码,您可以获得当周的开始和结束日期
答案 4 :(得分:0)
$thisWeekHasLastFridayOfMonth = function () {
$lastFridayThisMonth = date('Y-m-d',strtotime('last Friday of this month'));
$testDate = date('Y-m-d',strtotime('today'));
$thisWeekSunday = (date('N',strtotime($testDate))!=1?date('Y-m-d',strtotime('last Sunday')):date('Y-m-d'));
$thisWeekSaturday = (date('N',strtotime($testDate))!=7?date('Y-m-d',strtotime('next Saturday')):date('Y-m-d'));
//echo $lastFridayThisMonth . '<br>' . $thisWeekSunday . '<br>' . $thisWeekSaturday;
if (strtotime($lastFridayThisMonth) >= strtotime($thisWeekSunday) &&
strtotime($lastFridayThisMonth) <= strtotime($thisWeekSaturday))
return true;
else
return false;
};
echo $thisWeekHasLastFridayOfMonth?'True':'False';