Получить номер недели (в год) с даты PHP

Я хочу взять дату и выяснить, какой номер недели.

До сих пор я до сих пор возвращаю 24, когда это должно быть 42.

<?php $ddate = "2012-10-18"; $duedt = explode("-",$ddate); $date = mktime(0, 0, 0, $duedt[2], $duedt[1],$duedt[0]); $week = (int)date('W', $date); echo "Weeknummer: ".$week; ?> 

это неправильно и совпадение, что числа меняются на противоположные? Или я почти там?

Solutions Collecting From Web of "Получить номер недели (в год) с даты PHP"

Сегодня использование PHP-объектов DateTime лучше:

 <?php $ddate = "2012-10-18"; $date = new DateTime($ddate); $week = $date->format("W"); echo "Weeknummer: $week"; 

Это потому, что в mktime() это выглядит так:

 mktime(hour, minute, second, month, day, year); 

Следовательно, ваш порядок неправильный.

 <?php $ddate = "2012-10-18"; $duedt = explode("-", $ddate); $date = mktime(0, 0, 0, $duedt[1], $duedt[2], $duedt[0]); $week = (int)date('W', $date); echo "Weeknummer: " . $week; ?> 
 $date_string = "2012-10-18"; echo "Weeknummer: " . date("W", strtotime($date_string)); 

использовать функцию даты php … http://php.net/manual/en/function.date.php

date («W», $ yourdate)

Как предложение:

 <?php echo date("W", strtotime("2012-10-18")); ?> 

Может быть, немного проще, чем все это.

Другие вещи, которые вы могли бы сделать:

 <?php echo date("Weeknumber: W", strtotime("2012-10-18 01:00:00")); ?> <?php echo date("Weeknumber: W", strtotime($MY_DATE)); ?> 

Получите сегодня дату, затем укажите номер недели на неделю

 <?php $date=date("W"); echo $date." Week Number"; ?> 

Ваш код будет работать, но вам нужно перевернуть 4-й и 5-й аргументы.

Я бы сделал это так

 $date_string = "2012-10-18"; $date_int = strtotime($date_string); $date_date = date($date_int); $week_number = date('W', $date_date); echo "Weeknumber: {$week_number}."; 

Кроме того, ваши имена переменных будут сбивать вас с толку после недели, не глядя на этот код, вы должны рассмотреть возможность чтения http://net.tutsplus.com/tutorials/php/why-youre-a-bad-php-programmer/

 <?php $ddate = "2012-10-18"; $duedt = explode("-",$ddate); $date = mktime(0, 0, 0, $duedt[1], $duedt[2],$duedt[0]); $week = (int)date('W', $date); echo "Weeknummer: ".$week; ?> 

У вас были параметры, чтобы не срабатывать неправильно – должен быть месяц / день / год, а не день / месяц / год

Правило состоит в том, что первая неделя года – это неделя, которая содержит первый четверг года.

Я лично использую Zend_Date для такого расчета, и получить неделю на сегодня – это просто. У них есть много других полезных функций, если вы работаете с датами.

 $now = Zend_Date::now(); $week = $now->get(Zend_Date::WEEK); // 10 

Расчет недели за данный N неделю назад с текущей недели в PHP

Получить неделю (N) назад с текущей недели года

попробуйте это решение

 date( 'W', strtotime( "2017-01-01 + 1 day" ) ); 
 function last_monday($date) { if (!is_numeric($date)) $date = strtotime($date); if (date('w', $date) == 1) return $date; else return date('Ym-d',strtotime('last monday',$date)); } $date = '2021-01-04'; //Enter custom date $year = date('Y',strtotime($date)); $date1 = new DateTime($date); $ldate = last_monday($year."-01-01"); $date2 = new DateTime($ldate); $diff = $date2->diff($date1)->format("%a"); $diff = $diff/7; $week = intval($diff) + 1; echo $week; //Returns 2.