Sysop.Fr
Catégories

apache

awk

bash

charmap

date

echo

encoding

find

grep

hexdump

irc

iso3166

ls

mysql

od

openssh

printf

python

read

sed

seq

smpp

sort/uniq

tar

tr

ucp

Articles

Mémo de la commande date

La commande date permet l'affichage et la configuration la date et l'heure du système.

1. Syntaxe

date [-d chaîne_date] [-f fichier] [-r fichier] [-R] [-s chaîne_date] [-u] [--date=chaîne_date] [--file=fichier] [--reference=fichier] [--rfc-822] [--set=chaîne_date] [--utc] [--universal] [--help] [--version] [+FORMAT] [MMJJhhmm[[SS]AA][.ss]]

Options
-d chaîne_date, --date=chaîne_dateAfficher la date et l'heure indiquées par la chaîne chaîne_date. L'affichage est fait avec le format par défaut, à moins qu'un argument commençant par un `+' ne fournisse un autre format
-f fichier, --file=fichierComme -d mais en utilisant successivement toutes les dates indiquées dans le fichier
-r fichier, --reference=fichierAfficher la date de dernière modification du fichier
-s chaîne_date, --set=chaîne_dateConfigurer l'horloge système avec la date et l'heure indiquées par chaîne_date, qui peut contenir éventuellement des noms littéraux de mois, de fuseau horaire, `am' ou `pm', etc...
-u, --utc, --universalAfficher ou configurer l'heure en utilisant le Temps Universel (heure du méridien de Greenwich) plutôt que le temps local

Format
%Hheure (00..23)
%Iheure (01..12)
%kheure ( 0..23)
%lheure ( 1..12)
%Mminute (00..59)
%pnotation locale pour AM ou PM
%rheure actuelle (sur 12 heures) (hh:mm:ss [AP]M)
%ssecondes écoulées depuis le 01-01-1970 à 00:00:00 T.U (extension non standard)
%Ssecondes (00..61)
%Theure actuelle, (sur 24 heures) (hh:mm:ss)
%Xreprésentation locale de l'heure (%H:%M:%S)
%Zfuseau horaire (par ex. MET), ou rien si le fuseau horaire n'est pas déterminé
%aabréviation locale du jour de la semaine (Dim .. Sam)
%Anom local du jour de la semaine (Dimanche .. Samedi)
%babréviation locale du nom du mois (Jan..Dec)
%Bnom local du mois (Janvier .. Décembre)
%cdate et heure locales (Sat Nov 04 12:02:33 EST 1989)
%djour du mois (01..31)
%Ddate (mm/jj/aa)
%jjour de l'année (001..366)
%mmois (01..12)
%Unuméro de semaine dans l'année (00..53). La semaine commence le Dimanche
%wJour de la semaine (0..6). Le 0 correspond au Dimanche
%Wnuméro de semaine dans l'année (00..53). La semaine commence le Lundi
%xreprésentation locale de la date (mm/jj/aa)
%ydeux derniers chiffres de l'année (00..99)
%Yannée (1970...)

2. Exemples

Affichage de dates
root@ubuntu:~# date
Fri Feb  6 10:35:11 CET 2015

root@ubuntu:~# date -d "yesterday"
Thu Feb  5 10:35:11 CET 2015

root@ubuntu:~# date -d "1 day ago"
Thu Feb  5 10:35:11 CET 2015

root@ubuntu:~# date -d "2 day ago"
Wed Feb  4 10:35:11 CET 2015

root@ubuntu:~# date -d "-2 day"
Wed Feb  4 10:35:11 CET 2015

root@ubuntu:~# date +%Y-%m-%d -d "yesterday"
2015-02-05

root@ubuntu:~# date +"%Y-%m-%d %H:%M:%S" -d "Mon Oct  1 10:14:00 2018"
2018-10-01 10:14:00

root@ubuntu:~# date +"%Y-%m-%d %H:%M:%S,%3N"
2018-09-28 16:54:41,349
Calcul de dates
root@ubuntu:~# for HH in $(seq -f %02g 6 19)
do
for MM in $(seq -f %02g 0 20 59)
do
dateStart="2024-06-27 ${HH}:${MM}:00"
dateStartString=$(date -d "${dateStart}" "+%Y%m%d%H%M%S")
dateStartSecond=$(date -d "${dateStart}" "+%s")
# dateStopSecond is 20 minutes (1200seconds -1) later
let "dateStopSecond=${dateStartSecond}+1199"
dateStop=$(date -d @${dateStopSecond} +"%Y-%m-%d %H:%M:%S")
dateStopString=$(date -d "${dateStop}" "+%Y%m%d%H%M%S")
echo "--start ${dateStartString} --stop ${dateStopString}"
done
done


--start 20240627060000 --stop 20240627061959
--start 20240627062000 --stop 20240627063959
--start 20240627064000 --stop 20240627065959
--start 20240627070000 --stop 20240627071959
--start 20240627072000 --stop 20240627073959
--start 20240627074000 --stop 20240627075959
--start 20240627080000 --stop 20240627081959
...
Sauvegarde avec timestamps
root@ubuntu:~# cp -pv fichier.ext fichier.ext.$(date +"%Y%m%d%H%M%S")