Отменить всю дату в php - PullRequest
       4

Отменить всю дату в php

0 голосов
/ 01 апреля 2012

OK

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

<?php
$d=date("F j Y");
$d=explode(" ", $d);
$month=$d[0];
$day=$d[1];
$year=$d[2];
<?php for ($i=10; $i>0; $i--)
{
      $date=$month."-".$day--."-".$year;
      echo $date;
?>

это работало на меня до вчерашнего вечера 31 марта. но утром 1 апреля начал печатать

Апрель-1-2012

Апрель-0-2012

Апрель - 1-2012 Апрель - 2-2012

и т. Д.

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

апрель-1-2012

март-31-2012

март-30-2012

Март-29-2012

и т. Д.

так как это могло быть возможно?

Заранее спасибо.


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

<?php
$d=date("F j Y");
 for ($i=0; $i>-10; $i--)
 {
$date="<br>".date('F-j-Y', strtotime("+$i days"));
echo $date;
}
?>

Ответы [ 3 ]

3 голосов
/ 01 апреля 2012

Это, наверное, самый быстрый способ сделать это

for($i=1; $i <= 10; $i++) {
    echo date("F j Y", time()-($i*24*60*60)); //Instead of 24*60*60 write 86400 to increase slight performance
}

Демо

2 голосов
/ 01 апреля 2012

Чтобы получить пошаговое уменьшение:

$date = date("F j Y");

for ($i = 0; $i < 10; ++$i)
{
  $dates[] = date("F-j-Y", strtotime($date . ' - ' . $i . ' day'));
}
1 голос
/ 01 апреля 2012

Если вы используете PHP5.2, вы можете использовать класс DateTime и метод модификации.

http://www.php.net/manual/en/datetime.modify.php

<?php
$date = new DateTime('2006-12-12');
$date->modify('-1 day');
echo $date->format('F-j-Y');
?>

В 5.3 вы можете использовать метод sub в классе DateTime: http://www.php.net/manual/en/datetime.sub.php

<?php
$date = new DateTime('2000-01-20');
$date->sub(new DateInterval('P1D'));
echo $date->format('F-j-Y');
?>

Итак, пример с использованием класса PHP 5.2 DateTime (пример здесь: http://ideone.com/uwkjj):

$date = new DateTime();
echo $date->format('F-j-Y');
for($i = 0; $i < 10; $i++){
    $date->modify('-1 day');
    echo $date->format('F-j-Y');
}

А вот пример использования PHP5.3 класса DateTime с методом sub

$date = new DateTime();
echo $date->format('F-j-Y');
for($i = 0; $i < 9; $i++){
    $date->sub(new DateInterval('P1D'));
    echo $date->format('F-j-Y');
}

На странице справки PHP для strtotime также есть интересное примечание: http://www.php.net/manual/en/function.strtotime.php, в котором говорится, что его нельзя использовать для математических операций. Интересно, что это значит. Но я думаю, что вычитание 1 дня должно быть хорошо.

Из руководства по PHP:

Использование этой функции для математических операций не рекомендуется. Это лучше использовать DateTime :: add () и DateTime :: sub () в PHP 5.3 и позже или DateTime :: modify () в PHP 5.2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...