Shell unix - Manipulation date
Résolu/Fermé
remousse
McFred - 27 juin 2013 à 15:01
- Messages postés
- 299
- Date d'inscription
- dimanche 2 novembre 2008
- Statut
- Membre
- Dernière intervention
- 20 novembre 2014
McFred - 27 juin 2013 à 15:01
A voir également:
- Shell unix - Manipulation date
- Shell unix - Manipulation date ✓ - Forum - Shell
- [Shell / UNIX] Manipulation de dates ✓ - Forum - Programmation
- [shell unix] manipuler une chaine ✓ - Forum - Shell
- [shell/unix] date de la veille ✓ - Forum - Shell
- Exercice script shell unix corrigé pdf ✓ - Forum - Shell
6 réponses
remousse
21 janv. 2013 à 10:36
- Messages postés
- 299
- Date d'inscription
- dimanche 2 novembre 2008
- Statut
- Membre
- Dernière intervention
- 20 novembre 2014
21 janv. 2013 à 10:36
petite rectification pour le calcul de new_date je fais ceci :
et cela me renvoie la date du jour avec 10 ans de plus
new_date=$(date "+%d/%m/%Y" -d $DATE --date='10years')
et cela me renvoie la date du jour avec 10 ans de plus
remousse
21 janv. 2013 à 11:49
- Messages postés
- 299
- Date d'inscription
- dimanche 2 novembre 2008
- Statut
- Membre
- Dernière intervention
- 20 novembre 2014
21 janv. 2013 à 11:49
le date invalide n'intervient pas tout le temps.
J'ai remarquer que l'erreur survenait lorsque les jours sont supérieurs à 12, comme 13/06/2005.
Pourtant je spécifie bien le format de la date.
Une idée ?
J'ai remarquer que l'erreur survenait lorsque les jours sont supérieurs à 12, comme 13/06/2005.
Pourtant je spécifie bien le format de la date.
Une idée ?
Si cela peux t'aider
Mydate=01/01/2000
# Date mise en seconde
Mydatesec=$(date -d $Mydate +%s)
# 10 years = 365*24*60*60*10+ 172800 --> 48 heure ( 29 fevrier et Annee bisextile)
TenY=315532800
# On ajoute 10 ans a la date
let "Mydatesec10y=$Mydatesec+$TenY"
# Date du jour en seconde
datejoursec=$(date +%s)
# R = date de base + 10 ans - Date du jour
let "R=$Mydatesec10y-$datejoursec"
echo "Le resultat est $R"
# Si le resultat est positif
if [ $R -gt 0 ];then
let "Plus=$datejoursec+$R"
echo "Il reste encore jusqu'a $(date -d @$Plus)"
else
echo "La date est passee depuis $(date -d @$Mydatesec10y)"
fi
Mydate=01/01/2000
# Date mise en seconde
Mydatesec=$(date -d $Mydate +%s)
# 10 years = 365*24*60*60*10+ 172800 --> 48 heure ( 29 fevrier et Annee bisextile)
TenY=315532800
# On ajoute 10 ans a la date
let "Mydatesec10y=$Mydatesec+$TenY"
# Date du jour en seconde
datejoursec=$(date +%s)
# R = date de base + 10 ans - Date du jour
let "R=$Mydatesec10y-$datejoursec"
echo "Le resultat est $R"
# Si le resultat est positif
if [ $R -gt 0 ];then
let "Plus=$datejoursec+$R"
echo "Il reste encore jusqu'a $(date -d @$Plus)"
else
echo "La date est passee depuis $(date -d @$Mydatesec10y)"
fi
remousse
21 janv. 2013 à 13:26
- Messages postés
- 299
- Date d'inscription
- dimanche 2 novembre 2008
- Statut
- Membre
- Dernière intervention
- 20 novembre 2014
21 janv. 2013 à 13:26
C'est bon j'ai trouvé un moyen d'arriver à mes fins.
Merci
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est ce que j'explique en dessous, il faut travailler avec les secondes.
La manipulation des dates passent par les secondes (date -d $Mydate +%s)
En secondes, tu ajoutes, enlèves, compares... etc., puis tu remets les secondes au format date...
Dans ton cas:
now=$(date +%s) ( Date du jour en secondes )
TADATE=$(date -d $DATE) ( Ta date en secondes )
10Y=315532800 (10 ans en secondes)
new_date=$($TADATE+$10Y) ( Ta date + 10 ans en secondes )
if [ $now > $new_date ]
......
j'espère t'avoir été utile...
La manipulation des dates passent par les secondes (date -d $Mydate +%s)
En secondes, tu ajoutes, enlèves, compares... etc., puis tu remets les secondes au format date...
Dans ton cas:
now=$(date +%s) ( Date du jour en secondes )
TADATE=$(date -d $DATE) ( Ta date en secondes )
10Y=315532800 (10 ans en secondes)
new_date=$($TADATE+$10Y) ( Ta date + 10 ans en secondes )
if [ $now > $new_date ]
......
j'espère t'avoir été utile...