Date & Time

De BlaxWiki
Aller à la navigationAller à la recherche

Time[modifier]

Il existe 2 horloges :
 - horloge matériel (ou cmos, rtc)
 - horloge systeme

La valeur du compteur de l'horloge système est toujours interprétée en temps universel. Il est préférable que l'heure du bios soit réglée sur l heure UTC. Si on utilise une autre 
référence la gestion du changement d’heure hiver/été devient difficile. Si on y ajoute la gestion de machines virtuelles et la mise à jour via NTP ça devient un cauchemar.

Linux a deux façons de gérer l'horloge :
- Si l'horloge est à l'heure universelle (UTC), elle n'est pas modifiée lors d'un changement d'heure. Dans ce cas, Linux "corrige à la volée" pour que le user voit l'heure locale.
C'est la façon normale de faire sur les Unix, mais pas Mac OS X.
- Si l'horloge est à l'heure locale (on indique dans quel fuseau horaire on se trouve), Linux l'affiche sans modification mais il doit la modifier à chaque changement d'heure.

Tape les commandes "date" et "date -u", si elles donnent des heures identiques, on est dans le 2ème cas (horloge est à l'heure locale). Sinon, tu es dans le premier.
Une fois que l'on a la bonne heure en locale, on va mettre à jour l'heure du bios en utc : hwclock --systohc –-utc
  • Correction de l'heure
1. Contenu de /etc/sysconfig/clock
ZONE="Europe/Paris"
UTC=true # indique que la valeur lue dans l’horloge matérielle est le temps universel (dans ce cas l'horloge matériel doit être réglé en UTC)

2. /etc/localtime doit etre un lien symbolique vers /usr/share/zoneinfo/Europe/Paris

3. /etc/adjtime doit contenir UTC et non Local

4. On tape date -u , si l'heure n'est pas la bonne (en UTC time), on met la bonne heure UTC en faisant : date -u $newdatime, puis on pousse la bonne heure UTC vers le bios : hwclock 
--systohc . On reboot et tout devrait etre bon

Date[modifier]

  • Date to epoch / Date from start system
date -d "2003-08-10 00:30:23" '+%s'
voir le time stamp d un fichier : ls -l --time-style +%s

dans dmesg, souvent la date est donnée en seconde depuis depuis le démarrage du system
$ date -u -d @162971.420309
Thu Jan  1 17:29:31 UTC 1970
  • Différent format de date
DATE=`date "+%Y%m%d"`
benj@serveur:~$ echo $DATE
20120118

DATEOLD=`date --date='7 days ago' "+%d%m%Y"`
11012012

DATE=`date +%Y-%m-%d`
benj@serveur:~$ echo $DATE
2012-01-18

Pour ne pas avoir de date (jour ou mois) avec un 0 (1 au lieu de 01), il faut rajouter un "-" entre le % et le m ou d
benj@serveur:~$ DATE=`date +%Y-%m-%d`
benj@serveur:~$ echo $DATE
2012-01-18

benj@serveur:~$ DATE=`date +%Y-%-m-%d`
benj@serveur:~$ echo $DATE
2012-1-18

benj@serveur:~$ DATE=`date '+DATE: %m/%d/%y%nTIME:%H:%M:%S'`
benj@serveur:~$ echo $DATE
DATE: 01/18/12 TIME:12:06:06