Shell unix - Manipulation date
Résolu/Fermé
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
-
21 janv. 2013 à 10:33
McFred - 27 juin 2013 à 15:01
McFred - 27 juin 2013 à 15:01
A voir également:
- Shell unix - Manipulation date
- Classic shell windows 11 - Télécharger - Personnalisation
- Cette photo n’a pas été prise cette année. trouvez la date, l'heure et avec quel modèle d'appareil photo elle a été prise. ✓ - Forum Graphisme
- Trier par date excel - Guide
- Formule excel si date supérieur à une autre date ✓ - Forum Excel
6 réponses
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
21 janv. 2013 à 10:36
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
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
21 janv. 2013 à 11:49
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
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
21 janv. 2013 à 13:26
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...