utilisation de wget

Mise à jour: 26 mai 2011
Version: 1.0
Author: Jean-Louis Bicquelet-Salaün
Location: http://jlbicquelet.free.fr
Copyright: (c) 2010-2011 Jean-Louis BICQUELET-SALAÜN

date en PHP

J'utilse PHP depuis très longtemps. Cela m'a permis d'améliorer la qualité de ce site ainsi que de simplifier la conception de site.

Jusqu'à présent, je m'étais fait une librairie pour mes besoins personnels, mais elle n'était pas assez propre pour être utilisable. Pour une fois, je vais partager un peut de mes tatonnements et de mon expérience concernant PHP

affichage de l'heure et de la date

Comme de nombreux langages de programmation, la manipulation de l'heure et de la date se fait autour des fonctions date() et time().

Les exemples qui suivent montre comment afficher l'heure et le jour.

<?php
$date = date("d/m/Y");
$heure = date("H:i");
echo 'Nous sommes le '.$date.' et il est '.$heure;
echo '<br>';
echo 'timestamp: '.time();
echo '<br><br>';
echo 'aujourd\'hui :',date("d/m/Y", time());
echo '<br>';
echo 'demain :',date("d/m/Y", time()+24*3600);
echo '<br>';
echo 'hier :',date("d/m/Y", time()-24*3600);
echo '<br>';
echo 'jour +1 : ',date("d/m/Y", mktime(0,0,0,11,11,2010)+24*3600);
?>');

Auparavant ce script fonctionnait très bien. On obtient mainteant le message suivant:

Warning: date(): It is not safe to rely on the system's timezone settings. You a
re *required* to use the date.timezone setting or the date_default_timezone_set(
) function. In case you used any of those methods and you are still getting this
 warning, you most likely misspelled the timezone identifier. We selected 'Europ
e/Paris' for '2.0/DST' instead in C:\usr\php\date2.php on line 2

Afin de supprimer ce warning, il faut fixer la time zone. On peut la mettre à la valeur UTC par exemple, mais pour nous Europe/Paris conviendra très bien.

<?php

// Maintenant, on doit fixer le time zone
date_default_timezone_set('Europe/Paris');

$date = date("d/m/Y");
$heure = date("H:i");
echo 'Nous sommes le '.$date.' et il est '.$heure;
echo '
'; echo 'timestamp: '.time(); echo '

'; echo 'aujourd\'hui :',date("d/m/Y", time()); echo '
'; echo 'demain :',date("d/m/Y", time()+24*3600); echo '
'; echo 'hier :',date("d/m/Y", time()-24*3600); echo '
'; echo 'jour +1 : ',date("d/m/Y", mktime(0,0,0,11,11,2010)+24*3600); ?>');

format pour afficher la date

Le format d'affichage des jours et des heures est assez standard pour ceux qui ont l'habitude de la programmation et peut se résumer dans le tableau suivant:

caractère correspondance
a am ou pm
A AM ou PM
B "Swatch Beat Time"
d Jour du mois
D jour de la semaine en anglais abrégé en 3 lettres
F mois
g heure sur 12h sans zéro initial
G heure sur 24h, sans zéro initial
h heure sur 12h allant de 01 à 12
H heure sur 24h allant de 01 à 23
i minutes
j jour du mois
l jour de la semaine en anglais
L 1 pour l'année bissextile, 0 sinon
m chiffre du mois, de 01 à 12
M abréviation du nom du mois
S suffixe ordinal pour le jour du mois
t nombre de jour dans le mois
U nombre de secondes depuis le 1er Janvier 1970
y année sur 2 chiffres
Y année sur 4 chiffres
z jour de l'année de 0 à 365
Z décalage horaire de la zone en secondes (-43200 à 43200)

affichage de l'heure et de la date

Il est aussi possible de retourner les éléments concernant la date sous forme de tableau:

<?php
date_default_timezone_set('Europe/Paris');
$current_date = getdate();

//On affiche les éléments du tableau renvoyé
foreach ($current_date as $key => $value)
    {
    echo $key.' : '.$value.'
'; } echo '<br><br>'; ?>');

Cela retourne les valeurs suivantes:

seconds : 24
minutes : 13
hours : 11
mday : 30
wday : 2
mon : 11
year : 2010
yday : 333
weekday : Tuesday
month : November
0 : 1291112004

Une autre manière de faire, plus rapide consiste à utiliser print_r, comme dans ce script getdate.php:

<?php
date_default_timezone_set('Europe/Paris');
$today = getdate();
print_r($today);
?>

>php getdate.php
Array
(
    [seconds] => 21
    [minutes] => 27
    [hours] => 11
    [mday] => 19
    [wday] => 2
    [mon] => 5
    [year] => 2015
    [yday] => 138
    [weekday] => Tuesday
    [month] => May
    [0] => 1432027641
)

mise en forme pour un affichage en français

Les formats d'affichage précédent permettent d'afficher la date lorsqu'il s'agit d'un format numérique. Ce n'est plus le cas, lorsqu'on souhaite afficher le mois ou le jour en toutes lettres.

Une manière de faire, consiste à passer par un tableau de hash qui va convertir d'Anglais en Français.

<?php

$days = array(
    'dimanche',
    'lundi',
    'mardi',
    'mercredi',
    'jeudi',
    'vendredi',
    'samedi',
);

$days_keys = array(
    'Sunday',
    'Monday',
    'Tuesday',
    'Wednesday',
    'Thursday',
    'Friday',
    'Saturday',
);

$translate = array_combine($days_keys,$days);

date_default_timezone_set('Europe/Paris');

echo $days_keys[1]."\n";
echo $days[1]."\n";


echo $translate [date("l",time())];
?>

résultat:
>php jour.php
Monday
lundi
mardi