Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/05/2015, à 15:41

Persang

conversion d'un timestamp en jours

Bonjour,

J'aimerai convertir en shell un timestamp en nombre de jours .
Pour cela j'ai utiliser la formule date -f time.txt +%d > timed.txt
mais ça n'a pas l'air de fonctionner .
J'ai ensuite convertie mon fichier timestamp en fichier date type yyyy/mm/dd hh/mm/ss .
Mais je n'ai pas trouvé comme convertir ce dernier en jour .

Je vous remercie d'avance pour votre aide .

Hors ligne

#2 Le 29/05/2015, à 16:34

pingouinux

Re : conversion d'un timestamp en jours

Bonjour,

J'aimerai convertir en shell un timestamp en nombre de jours

En nombre de jours depuis quand ?
Pour calculer le nombre de jours entre deux dates, tu peux calculer chacune d'elle en secondes (date -u +"%s"), et diviser la différence par 86400 (le nombre de secondes dans une journée). Le paramètre -u permet de s'affranchir du décalage horaire éventuel entre les deux dates.

Hors ligne

#3 Le 30/05/2015, à 10:09

credenhill

Re : conversion d'un timestamp en jours

hello
utiliser date +%j pour avoir le compte de jours depuis le début de l'année

Hors ligne

#4 Le 01/06/2015, à 09:42

Persang

Re : conversion d'un timestamp en jours

Bonjour,

Oui en effet c'est entre deux dates (1989 et 2004) . En fait ce que j'aimerai faire c'est à partir d'un fichier date type yyyy/mm/dd hh/mm/ss, de considérer que les jours .
C'est à dire que ma 1ère date type yyyy/mm/dd hh/mm/ss sera mon 1er jour, ma 2ème date type yyyy/mm/dd hh/mm/ss mon 2ème jour, etc ...
Cela en considérant que mon catalogue de date s'étend sur plusieurs années et sur plusieurs mois .

Je vous remercie .

Hors ligne

#5 Le 01/06/2015, à 09:57

pingouinux

Re : conversion d'un timestamp en jours

Peux-tu montrer quelques lignes de ton fichier ? La première date doit bien correspondre au jour n°1, pas 0 ?

Édité :
Ce serait plus simple si les dates étaient sous cette forme

yyyy-mm-dd hh:mm:ss

Avec le format que tu indiques, essaye

n=0
while read dat
do
   sec=$(date -u -d "$dat" +"%s")
   ((!n++)) && sec0=$sec
   printf "%s   jour n° %5d\n" "$dat" $(((sec-sec0)/86400+1))
done < <(awk '{gsub("/","-",$1);gsub("/",":",$2);print $1" "$2}' time.txt)

Dernière modification par pingouinux (Le 01/06/2015, à 11:30)

Hors ligne

#6 Le 01/06/2015, à 11:28

credenhill

Re : conversion d'un timestamp en jours

hello
on convertit les dates en secs avec mktime

$ D1="1998/10/20 11/22/33"; D2="2004/8/13 10/11/1"
$ awk -v d1="${D1//\// }" -v d2="${D2//\// }" 'BEGIN {print int((mktime(d2)-mktime(d1))/(3600*24))}'
2123

Hors ligne