Я пытаюсь выяснить, как устанавливать даты до каждых 15-го и конца месяца только … то, что я получаю до сих пор, составляет всего лишь 15 дней с моей текущей даты .. текущая дата = дата сегодня. LOGIC: if текущий день меньше 15, тогда дата начала цикла находится в конце месяца, а если текущий день равен или больше 15, то дата начала цикла будет на 15-й. поэтому в моем случае моя текущая дата – 9 ноября, поэтому первый выход должен быть 30 ноября.
$y = 1; while ($y <= $num_term) { // num_term is equal to the number of output $month_line = strtotime("15 day", strtotime("$month_sched")); $day = date("d", $month_line); $month_int = date("Md", $month_line); }
Вывод:
Nov 24`<br />` Dec 9`<br />` Dec 24`<br />`
Может кто-нибудь мне помочь … спасибо 🙂
Вы можете получить общее количество дней в месяце
<?php $a_date = "2015-11-09"; echo totaldays = date("t", strtotime($a_date)); ?>
Вы можете получить текущий день с текущей даты:
<?php echo curday = date('d'); if(curday==totaldays){ echo "lastday"; } if(curday==15) { echo "15th day"; } ?>
Попробуй это
- Найти первый день месяца
- Найдите последний день месяца, как сказал Лалджи Накум
- Проверьте свою дату с 15-м днем месяца.
if($today < $hDay){ echo 'Start : '. date("tmY"); }else if ($today >= $hDay){ echo 'Start :'. $hDay; }
Здесь 1. $ сегодня будет текущая дата, 2. $ hDay будет 15-м днем месяца, как 15 ноября
Вот пример кода
echo 'First day of month '. $fDay = date('01-m-Y'); echo '<br> 15th day of month '. $hDay = date('dm-Y', (strtotime($fDay)+ (86400 * 15))); echo '<br> Last Day of month '. $lDay = date("tmY"); echo '<br> Current day '. $today = date('dm-Y'); //$today = date('dm-Y', strtotime($hDay)+86400 ); echo '<br>'; if($today < $hDay){ echo 'Start : '. $lDay = date("tmY"); }else if ($today >= $hDay){ echo 'Start :'. $hDay; }
find 15th: strtotime($month_sched." +14 day");
найти последний день месяца: strtotime($month_sched." next month - 1 hour");
Пожалуйста, попробуйте следующий код:
<?php $y=1; $num_term = 10; //start date $month_sched = date("2012-02-01"); while($y <= $num_term) { //15th $month_line_15 = strtotime($month_sched." +14 day"); //last day of month $month_line_last = strtotime($month_sched." next month - 1 hour"); $day = date("Md", $month_line_15); $month_int = date("Md", $month_line_last); $month_sched = date("Ymd",strtotime($month_sched." +1month")); $y++; }
Проверено.
PHPFiddle
Вы можете использовать mktime с 0 и 15 в качестве значения для дня:
$a = date("md", mktime(0,0,0,$month,0)); $b = date("md", mktime(0,0,0,$month,15));
Это даст вам последний день предыдущего месяца и 15. месяца в месяц
Более чем достаточно ответов для этого. Я хотел бы также дать ответ.
$beginDate = new DateTime('15 January'); // clone start date $endDate = clone $beginDate; // Add 1 year to start date $endDate->modify('+1 year'); // Increase with an interval of one month $dateInterval = new DateInterval('P1M'); $dateRange = new DatePeriod($beginDate, $dateInterval, $endDate); foreach ($dateRange as $day) { echo $day->format('Ym-d')."<br />"; // 15th echo $day->format('Ym-t')."<br />"; // Last month day }
Руководство PHP – DateTime
Руководство PHP – DateInterval
Руководство PHP – DatePeriod
Руководство PHP – клон