122 votes

Soustraire 1 jour avec PHP

J'essaie de prendre un objet date qui sort de mon CMS Drupal, de soustraire un jour et d'imprimer les deux dates. Voici ce que j'ai

$date_raw = $messagenode->field_message_date[0]['value'];

print($date_raw);

//this gives me the following string: 2011-04-24T00:00:00

$date_object = date_create($date_raw);

$next_date_object = date_modify($date_object,'-1 day');

print('First Date ' . date_format($date_object,'Y-m-d'));

//this gives me the correctly formatted string '2011-04-24'

print('Next Date ' . date_format($next_date_object,'Y-m-d'));

//this gives me nothing. The output here is always blank

Je ne comprends pas pourquoi l'objet date d'origine s'affiche correctement, mais que j'essaie ensuite de créer un objet date supplémentaire et de le modifier en soustrayant un jour, ce qui semble impossible. Le résultat est toujours vide.

17voto

Clive Points 28701

Je ne sais pas pourquoi votre code actuel ne fonctionne pas, mais si vous n'avez pas spécifiquement besoin d'un objet date, ceci fonctionnera :

$first_date = strtotime($date_raw);
$second_date = strtotime('-1 day', $first_date);

print 'First Date ' . date('Y-m-d', $first_date);
print 'Next Date ' . date('Y-m-d', $second_date);

14voto

cuperto Points 71

Commentaires tirés des commentaires de la fonction strtotime du manuel Php :

echo date( "Y-m-d", strtotime( "2009-01-31 -1 day"));

Ou

$date = "2009-01-31";
echo date( "Y-m-d", strtotime( $date . "-1 day"));

12voto

Militaru Points 19

C'est aussi simple que ça :

date("Y-m-d", strtotime("-1 day"));

date("Y-m-d", strtotime("-1 months"))

6voto

user3413723 Points 99

Voici comment procéder : convertissez-le d'abord en un horodatage Unix, soustrayez 60*60*24 (exactement un jour en secondes), puis récupérez la date à partir de là.

$newDate = strtotime($date_raw) - 60*60*24;
echo date('Y-m-d',$newDate);

Note : comme apokryfos l'a souligné, cela serait techniquement perturbé par les changements d'heure d'été où il y aurait un jour avec soit 25 soit 23 heures.

-2voto

Code Points 467

Comment ajouter une année à une date et en soustraire un jour en asp.net c# ?

Convert.ToDateTime(txtDate.Value.Trim()).AddYears(1).AddDays(-1);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X