Compter le nombre de jours du mois courant
Fermé
DarkBune
Messages postés
191
Date d'inscription
jeudi 12 janvier 2017
Statut
Membre
Dernière intervention
16 septembre 2024
-
14 oct. 2017 à 10:43
tuxboy Messages postés 995 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 - 18 août 2018 à 11:05
tuxboy Messages postés 995 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 - 18 août 2018 à 11:05
A voir également:
- Compter le nombre de jours du mois courant
- Compte facebook suspendu 180 jours - Guide
- Compte instagram suspendu 180 jours - Guide
- Nombre de jours entre deux dates excel - Guide
- Excel compter le nombre de oui ✓ - Forum Excel
- Le fichier à télécharger est dans un format peu courant. trouvez le moyen de l’ouvrir. quel mot s’affiche ? - Forum Windows
6 réponses
le hollandais volant
Messages postés
4998
Date d'inscription
samedi 8 mars 2008
Statut
Membre
Dernière intervention
23 décembre 2023
1 057
Modifié le 14 oct. 2017 à 14:36
Modifié le 14 oct. 2017 à 14:36
Bonjour,
En bash il y a beaucoup plus simple :
Le code suivant :
affiche le nombre de jours du mois courant.
La commande "date" permet de faire des calculs en langage naturel, par exemple en disant « aujourd’hui + 1 an + 1 mois − 3 jours ».
Pour afficher du texte autour de ce chiffre :
Le fonctionnement de la commande présente est le suivant :
retourne le jour actuel (14, pour le 14 octobre).
Place le jour dans un nombre, une variable.
retire (-) le nombre (14) de jours (days). Pour aujourd’hui, ça mettrait « -14 days ».
Affiche la date correspondant à la date actuelle -14 jours. Soit le dernier jour du mois précédent.
Comme on veut le mois courant, il faut ajouter un mois.
Ici on affiche la date complète du dernier jour de ce mois.
Si on ne veut que le jour (31, pour ce mois-ci), on ajoute +%d :
Dans d’autres langages de prog (par exemple en JS pour moi en ce moment), il est courant de faire comme ça : on prend le premier jour d’un mois donné (1 octobre), on ajoute un mois (1 novembre) et on retire un jour (31 octobre), et l’on dispose alors du dernier jours du mois.
En bash il y a beaucoup plus simple :
Le code suivant :
date -d "-$(date +%d) days + 1 month" +%d
affiche le nombre de jours du mois courant.
La commande "date" permet de faire des calculs en langage naturel, par exemple en disant « aujourd’hui + 1 an + 1 mois − 3 jours ».
Pour afficher du texte autour de ce chiffre :
date -d "-$(date +%d) days + 1 month" +"%d jours dans %B"
Le fonctionnement de la commande présente est le suivant :
date +%d
retourne le jour actuel (14, pour le 14 octobre).
$(date +%d)
Place le jour dans un nombre, une variable.
-$(date +%d) days
retire (-) le nombre (14) de jours (days). Pour aujourd’hui, ça mettrait « -14 days ».
date -d "-$(date +%d) days"
Affiche la date correspondant à la date actuelle -14 jours. Soit le dernier jour du mois précédent.
date -d "-$(date +%d) days + 1 month"
Comme on veut le mois courant, il faut ajouter un mois.
Ici on affiche la date complète du dernier jour de ce mois.
Si on ne veut que le jour (31, pour ce mois-ci), on ajoute +%d :
date -d "-$(date +%d) days + 1 month" +%d
Dans d’autres langages de prog (par exemple en JS pour moi en ce moment), il est courant de faire comme ça : on prend le premier jour d’un mois donné (1 octobre), on ajoute un mois (1 novembre) et on retire un jour (31 octobre), et l’on dispose alors du dernier jours du mois.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 420
14 oct. 2017 à 11:00
14 oct. 2017 à 11:00
Salut,
Ton script apparaît tel quel dans ton éditeur de texte ?
À défaut de mettre un point virgule (;) entre chaque instruction, mettre au moins un retour à la ligne, ne serait-ce que pour la lisibilité ;-(
Ton script apparaît tel quel dans ton éditeur de texte ?
À défaut de mettre un point virgule (;) entre chaque instruction, mettre au moins un retour à la ligne, ne serait-ce que pour la lisibilité ;-(
DarkBune
Messages postés
191
Date d'inscription
jeudi 12 janvier 2017
Statut
Membre
Dernière intervention
16 septembre 2024
7
14 oct. 2017 à 11:32
14 oct. 2017 à 11:32
Salut oui , je le fais avec la commande "nano" sinon vous avez remarquer une erreur ? Merci
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 420
>
DarkBune
Messages postés
191
Date d'inscription
jeudi 12 janvier 2017
Statut
Membre
Dernière intervention
16 septembre 2024
14 oct. 2017 à 11:47
14 oct. 2017 à 11:47
Non parce que c'est illisible et indigeste.
Mets ça en forme et repostes ton code entre les balises
Mets ça en forme et repostes ton code entre les balises
<code></code> et après on avisera ;-\
DarkBune
Messages postés
191
Date d'inscription
jeudi 12 janvier 2017
Statut
Membre
Dernière intervention
16 septembre 2024
7
14 oct. 2017 à 11:45
14 oct. 2017 à 11:45
DarkBune
Messages postés
191
Date d'inscription
jeudi 12 janvier 2017
Statut
Membre
Dernière intervention
16 septembre 2024
7
14 oct. 2017 à 11:57
14 oct. 2017 à 11:57
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 420
14 oct. 2017 à 12:01
14 oct. 2017 à 12:01
Comme dit plus haut, chaque instruction doit être sur une ligne différente ou séparée par un point virgule (;) !
Il ne faut pas d'espace entre "$" et "(" (source de la 1ère erreur).
Il ne faut pas d'espace entre "$" et "(" (source de la 1ère erreur).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Voici la réponse à votre question.
Par contre j'aimerais pouvoir entrer une date et un mois afin d'avoir un retour.
Pouvez-vous m'aider?
MERCI D'AVANCE
Par contre j'aimerais pouvoir entrer une date et un mois afin d'avoir un retour.
Pouvez-vous m'aider?
#!/bin/bash
MOIS=$(date +"%m")
case $MOIS in
01) NOM="janvier";;
02) NOM="fevrier";;
03) NOM="mars";;
04) NOM="avril";;
05) NOM="mai";;
06) NOM="juin";;
07) NOM="juillet";;
08) NOM="aout";;
09) NOM="septembre";;
10) NOM="octobre";;
11) NOM="novembre";;
12) NOM="decembre";;
esac
ANNEE=$(date +"%Y")
case $MOIS in
01|03|05|07|08|10|12)
echo "31 jours en $NOM $ANNEE";;
04|06|09|11)
echo "30 jours en "$NOM" "$ANNEE;;
02)
BISSEXTILITE=$(expr $ANNEE % 4)
if [ $BISSEXTILITE != 0 ]
then
echo "28 jours en "$NOM" "$ANNEE
else
BISSEXTILITE=$(expr $ANNEE % 100)
if [ $BISSEXTILITE != 0 ]
then
echo "29 jours en "$NOM" "$ANNEE
else
BISSEXTILITE=$(expr $ANNEE % 400)
if [ $BISSEXTILITE != 0 ]
then
echo "28 jours en "$NOM" "$ANNEE
else
echo "29 jours en "$NOM" "$ANNEE
fi
fi
fi
esac
MERCI D'AVANCE
UnGnU
Messages postés
1158
Date d'inscription
lundi 2 mai 2016
Statut
Contributeur
Dernière intervention
22 décembre 2020
157
7 juin 2018 à 16:15
7 juin 2018 à 16:15
Salut,
Ben suffit de le demander en début de script (commande "
Ben suffit de le demander en début de script (commande "
read") plutôt que le l'inscrire en dur.
djacidj
>
UnGnU
Messages postés
1158
Date d'inscription
lundi 2 mai 2016
Statut
Contributeur
Dernière intervention
22 décembre 2020
7 juin 2018 à 16:26
7 juin 2018 à 16:26
Merci pour votre réponse, pourriez-vous me montrer un exemple car j'ai pas mal de difficulté en script Linux lol
Merci d'avance!!!
Merci d'avance!!!
tuxboy
Messages postés
995
Date d'inscription
lundi 23 juillet 2012
Statut
Membre
Dernière intervention
28 mai 2019
190
18 août 2018 à 11:05
18 août 2018 à 11:05
Bonjour,
Juste pour faire une proposition différente, tu peux essayer ça :
Juste pour faire une proposition différente, tu peux essayer ça :
echo $(cal) | awk '{print $NF}'
Modifié le 14 oct. 2017 à 15:07
quand je lance votre script cela m'affiche cela : "date: date incorrecte "- 14 days + 1 mouth "
14 oct. 2017 à 19:57
Dans votre message, vous écrivez "mouth" alors que c’est bien "month".