Получить номер недели (в год) с даты 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;
?>
Неправильно ли и совпадение, что числа обращаются вспять? Или я почти там?
Ответы
Ответ 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));
Ответ 3
использовать функцию даты php... http://php.net/manual/en/function.date.php
date ( "W", $yourdate)
Ответ 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 - должен быть месяц/день/год, а не день/месяц/год
Ответ 9
Расчет недели недели для данного N неделю назад с текущей недели в PHP
Получить неделю (N) назад с текущей недели года
Ответ 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.