Подтвердить что ты не робот

Получить номер недели (в год) с даты 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;
?>

Неправильно ли и совпадение, что числа обращаются вспять? Или я почти там?

4b9b3361

Ответ 1

Сегодня, используя 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;
?>

Ответ 2

$date_string = "2012-10-18";
echo "Weeknummer: " . date("W", strtotime($date_string));

Ответ 4

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

<?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)); ?>

Ответ 5

Сегодня получите дату, затем укажите номер недели на неделю.

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

Ответ 6

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

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

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

Ответ 7

Ваш код будет работать, но вам нужно перевернуть 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/

Ответ 8

<?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;
?>

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

Ответ 10

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

date( 'W', strtotime( "2017-01-01 + 1 day" ) );

Ответ 11

function last_monday($date) 
{
    if (!is_numeric($date))
        $date = strtotime($date);
    if (date('w', $date) == 1)
        return $date;
    else
        return date('Y-m-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.