Php, манипуляция с датами?

Я новичок в php. И я хотел бы знать некоторые из манипуляций с датами в php.

// Get Current date $date = date("Ymd"); 

Что делать, если я хочу вычесть текущую дату и конкретную дату, скажем, «сегодня – 2008-06-26»?

  1. Как сделать математическую манипуляцию датой (добавить, минус, многократно и т. Д.) В php?

  2. Если сегодня подписчик подписывается на сегодняшний день 2009-06-26, через 1 неделю я хочу удалить свою учетную запись из своей базы данных, как мне это сделать? (Я использую mysql)

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

Прежде всего, вам нужно понять разницу между date() , time() и mktime() .

date() используется только для отображения. Никогда не используйте его для математических манипуляций.

time() возвращает текущую time() timestamp ( int представляет текущее время и дату).

mktime() , без каких-либо параметров, совпадает с time() . С параметрами он позволяет получить временную timestamp для заданного времени. Параметры находятся в следующем порядке: час, минута, секунда, месяц, день, год.

Теперь, ваши вопросы :

Вопрос 1

Чтобы сделать манипуляции во времени, вы можете сделать следующее:

 $today = mktime(0,0,0); //Today, time neutral $otherDate = mktime(0, 0, 0, 6, 26, 2008); //2008-06-26, time neutral $secondsBetweenDates = $today - $otherDate; 

вопрос 2

Вам лучше сделать что-то подобное прямо в вашем SQL. Здесь вы можете сделать это для двух наиболее распространенных серверов баз данных, работающих на PHP. Я предполагаю, что DateSubscribed имеет действительный тип данных даты.

 --- MySQL DELETE FROM `subscribers` WHERE NOW() < DATE_ADD(`DateSubscribed`, INTERVAL 1 WEEKS); --- PostgreSQL DELETE FROM "subscribers" WHERE CURRENT_TIMESTAMP < ("DateSubscribed" + interval '1 week'); 

Вопрос 3

Это зависит от вашей СУБД. Вот страницы документации, связанные с функциями Date / Time для MySQL и PostgreSQL.

  • MySQL: 11.6. Функции даты и времени
  • PostgreSQL: 9.9. Функции и операторы даты и времени

Q1: Сначала преобразуйте даты в метки времени. Затем вы можете выполнить математику с отметками времени и преобразовать их в даты. Например:

 $num_seconds_between = strtotime('today') - strtotime('2008-06-26'); $num_days_between = $num_seconds_between / 60 / 60 / 24; 

Q2: узнать дату удаления его учетной записи (в формате базы данных «дата / время»):

 date('Ymd H:i:s', strtotime('+1 week', strtotime('2009-06-26'))); 

Затем вы можете удалить его любым способом. Похоже, вы можете использовать работу cron .

Q3: Почти все, что вам нужно для этого. Если у вас есть конкретные вопросы о других способностях, разместите их здесь. Вы можете узнать руководство по PHP для получения дополнительной информации.