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

Как преобразовать номер недели и год в временную метку unix?

Я пытаюсь объединить даты в число недели и год, а затем я хочу преобразовать номер этой недели обратно в временную метку unix. Как я могу это сделать?

4b9b3361

Ответ 1

Я предполагаю, что вы используете идентификационные номера ISO 8601, и хотите, чтобы первый день недели ISO 8601, чтобы, например, Week 1 of 2011 возвращает January 3 2011.

strtotime может сделать это из коробки, используя формат {YYYY}W{WW}:

echo date("Y-m-d", strtotime("2011W01")); // 2011-01-03

Обратите внимание, что номер недели должен быть двухзначным.

Позорно, DateTime::createFromFormat, новый способ PHP 5, связанный с датами, кажется неспособным разобрать эту информацию - у нее нет "недели".

Ответ 2

  • $week: номер недели
  • $year: номер года

Тогда:

$timestamp = gmmktime (0, 0 , 0 , 1, , 4 + 7*($week - 1), $year);

4 + 7*($week - 1) исходит из того, что в соответствии с ISO 8601, первая неделя года - та, которая содержит 4 января.

Ответ 3

strtotime('1/1/2011 + 4 weeks') (1/1 всегда на неделе номер один, это приведет меня к пятой неделе). если вам нужна какая-то отметка времени на этой неделе, тогда все, что вам нужно, иначе вам нужно будет отправиться в понедельник на этой неделе:

$t = strtotime('1/1/2011 + 4 weeks');
$t -=  24 * 60 * 60 * date('w', $t);

Обновить. Вместо 1/1/2011 используйте первый понедельник в 2011 году. Второй расчет больше не нужен.