Date & Time

De BlaxWiki
Aller à la navigationAller à la recherche

Time

voir aussi cette page

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

Date

  • 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