2016-11-08 2 views
2

Я недавно наткнулся на приложение https://entire.life, которое показывает календарь, как изображения ниже, в которых он показывает ряд точек за каждый год вашей жизни.Создайте даты начала и окончания каждой недели года, начиная с любой даты с PHP

Ряд точек шириной 52 точки, 1 точка в неделю для этого года.

Каждая строка - год.

Каждая строка 1-я точка недели начинается с недели вашей даты рождения, а не 1 января года. Таким образом, строка недельных точек составляет 1 год в строке, начиная и заканчивая на вашей неделе рождения.

Последнее изображение, приведенное ниже, показывает, что недельные точки, которые находятся в будущем сегодняшней даты, отображаются как серые точки, указывающие, что эти недели еще не произошли.

Вот живой пример из приведенных выше изображений, чтобы увидеть DIT в действии https://entire.life/jason-davis


https://i.stack.imgur.com/ne07D.png enter image description here


Это изображение ниже показывает форму добавления события на текущей неделе точка который был нажат.

https://i.stack.imgur.com/K5BUT.png enter image description here


Это изображение показывает, как неделю точки для будущих дат серые.

https://i.stack.imgur.com/pYGAn.png enter image description here


ВОПРОС

Использование PHP Я хотел бы, чтобы создать календарь, как это основан на пользователей BirthDate как выше показанное приложение.

Вот живой пример из приведенных выше изображений, чтобы увидеть DIT в действии https://entire.life/jason-davis

Правила:

  • Генерировать ряд точек, представляющих каждую неделю года
  • Сформировать строку из вышеуказанных недельных дней для столетней стоимости строк, начиная с даты рождения пользователя.
  • Начальная точка недели для каждой строки должна начинаться с даты рождения, но не с 1 января года.

Использование функций PHP DateTime, как определить даты начала и окончания для каждой из 52 недель на основе даты рождения пользователей?

Моя дата рождения в приведенном здесь примере 21 апреля 1983 1-ые года неделя точка представляет эти даты, основанные на этой начальной дате:

первой строки года точек
- 21 - 27 апреля 1983 - 0 лет
- 28 апреля - 4 мая 1983 - 0 лет
- 5 - 11 мая 1983 - 0 лет
- 12 - 18 мая 1983 - 0 лет
- 19 - 25 мая 1983 - 0 лет старый
- 26 мая - 1 июня 1983 - 0 лет
- 2 - 8 июня 1983 - 0 лет
- 9 - 15 июня 1983 - 0 лет
- 16 - 22 июня 1983 - 0 лет
- 23 - 29 июня 1983 - 0 лет
- ...
- ... - ...
- 29 Мар - 4 апреля 1984 - 0 лет
- 5 - 11 апреля 1984 - 0 лет
- 12 - 18 апреля 1984 г. - 0 г.
- 19 - 20 апреля 1984 г. - 0 лет

второго ряда летних точек
- 21 - 27 апреля 1984 1 год - 28 апреля - 4 мая 1984 - 1 года
- 5 - 11 мая 1984 - 1 года
- 12 - 18 мая 1984 - 1 лет
- 19 - 25 мая 1984 - 1 лет
- 26 мая - 1 июня 1984 - 1 лет
- 2 - 8 июня 1984 - 1 лет
- 9 - 15 июня 1984 года - 1 год
- 16 - 22 июня 1984 - 1 лет
- 23 - 29 июня 1984 - 1 лет
- ...
- ...
- ...
- 29 Мар - 4 апреля 1985 - 1 года
- 5 - 11 Апрель 1985 - 1 года
- 12 - 18 Апрель 1985 - 1 года
- 19 - 20 Апрель 1985 - 1 года

+1

Я голосую, чтобы закрыть этот вопрос как вне темы, потому что он показывает нулевые усилия при попытке решить проблему. В основном вы спрашиваете: «Можете ли вы написать этот код для меня?» –

ответ

2

Там вы идете:

<?php 
    $userBirthDate = "1990-10-02"; // You probably use data from database or POST or GET, I setted a static one just for the example 
    $wishedDate = new DateTime($userBirthDate); // Here, you can add any desired date as an argument to DateTime, by default, it'll take the current DateTime. 
    // This is for 100 years 
    for ($x = 0; $x < 100; $x++){ 
    echo '<hr>'; // Just so every year will be separated by a html horizontal bar 
    $limit = 52; // 52 for a year, but you could do as much as you need right there 
    for ($i = 0; $i < $limit; $i++){ 
     echo $wishedDate->format('Y-m-d H:i:s'); // Write the current date 
     echo '<br />'; // Just to switch line 
     $wishedDate->modify('+1 week'); // Add one week to the wished date 
    } 
    } 
?> 
+1

Удивительное спасибо – JasonDavis

+0

Это мое удовольствие! Не забудьте принять ответ, если он вам понравится :-)! –

+0

Не могли бы вы помочь в дальнейшем доработать, чтобы принять это и подсчитать 100 лет, так что в основном 100 строк этого постоянно подсчитываются с такой скоростью? Как это делает https://entire.life/jason-davis – JasonDavis

Смежные вопросы