Я пытался получить дату текущей недели в четверг, используя приведенную ниже кодкак найти thurdays текущего месяца в PHP
date('m/d/y',strtotime('thursday this week'));
Как выше, как я могу получить текущий месяц всех даты в четверг в PHP.
Я пытался получить дату текущей недели в четверг, используя приведенную ниже кодкак найти thurdays текущего месяца в PHP
date('m/d/y',strtotime('thursday this week'));
Как выше, как я могу получить текущий месяц всех даты в четверг в PHP.
Вы можете отфильтровать даты, как это:
$sDay = 'Thursday';
$rgTime = array_filter(
range(strtotime('first day of this month'), strtotime('last day of this month'), 3600*24),
function($iTime) use ($sDay)
{
return date('l', $iTime) == $sDay;
});
Альтернативный способ получить $rgTime
будет:
$rgNums = ['first', 'second', 'third', 'fourth', 'fifth'];
$rgTime = [];
$sDay = 'Thursday';
foreach($rgNums as $sNum)
{
$iTime = strtotime($sNum.' '.$sDay.' of this month');
if(date('m', $iTime)==date('m'))
{
//this check is needed since not all months have 5 specific week days
$rgTime[]=$iTime;
}
}
-Теперь, если вы хотите получить конкретный формат, например Y-m-d
, который будет:
$rgTime = array_map(function($x)
{
return date('Y-m-d', $x);
}, $rgTime);
Редактировать
Если вы хотите иметь несколько дней в неделю, это также легко. Для первого образца, который будет:
$rgDays = ['Tuesday', 'Thursday'];
$rgTime = array_filter(
range(strtotime('first day of this month'), strtotime('last day of this month'), 3600*24),
function($iTime) use ($rgDays)
{
return in_array(date('l', $iTime), $rgDays);
});
hi firend .. он сработал ... как я могу попасть в комбинацию как в четверг, так и во вторник. – mangala
Во-первых, вы должны указать это в своем вопросе. –
ya я нашел ответ .. спасибо ... я использовал тот же для tuesdays .. и я объединил оба массива. я получил текущие месяцы во вторник и в четверг ... – mangala
попробуйте это. Должно работать :)
<?
$curMonth = date("m");
$start = strtotime("next Thursday - 42 days");
for ($i=1; $i < 15; $i++){
$week = $i*7;
if (date("m",strtotime("next Thursday - 42 days + $week days")) == $curMonth){
$monthArr[] = date("m/d/y",strtotime("next Thursday - 42 days + $week days"));
}
}
print_r($monthArr);
?>
Желательно использовать улучшенные возможности по дате и времени, которые поставляются с PHP 5.3.0. А именно, классы DatePeriod
и DateInterval
.
<?php
$start = new DateTime('first thursday of this month');
$end = new DateTime('first day of next month');
$interval = new DateInterval('P1W');
$period = new DatePeriod($start, $interval , $end);
foreach ($period as $date) {
echo $date->format('c') . PHP_EOL;
}
Редактировать
Более сложная фильтрация может осуществляться различными способами, но вот простой подход к показу каждый вторник и четверг в месяц.
...
$interval = new DateInterval('P1D');
...
foreach ($period as $date) {
if (in_array($date->format('D'), array('Tue', 'Thu'), TRUE)) {
echo $date->format('c') . PHP_EOL;
}
}
Фактически в моем приложении я использую один продукт на основе календаря. В том, что я должен показывать только текущие месячные продукты. Поэтому я задал этот вопрос. – mangala