Я хочу взять дату и выяснить, какой номер недели.
До сих пор я до сих пор возвращаю 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; ?>
это неправильно и совпадение, что числа меняются на противоположные? Или я почти там?
Сегодня использование 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.