[R] Jour de semaine d'une date donnée.
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- martinbrait
- Niveau 4
- Messages : 55
- Enregistré le : ven. 06 mars 2009 17:17
- Status : Hors ligne
[R] Jour de semaine d'une date donnée.
Bonjour!
A ma connaissance, pas de fonction autoit renvoyant le jour de semaine d'une date donnée.
Je me mets donc à l'oeuvre, pour une date donnée (XXIème siècle, uniquement)
A ma connaissance, pas de fonction autoit renvoyant le jour de semaine d'une date donnée.
Je me mets donc à l'oeuvre, pour une date donnée (XXIème siècle, uniquement)
Modifié en dernier par martinbrait le sam. 04 mai 2013 18:52, modifié 1 fois.
Re: [--] Jour de semaine d'une date donnée.
Salut
_DateToDayOfWeek ne suffit pas ?
_DateToDayOfWeek ne suffit pas ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
- martinbrait
- Niveau 4
- Messages : 55
- Enregistré le : ven. 06 mars 2009 17:17
- Status : Hors ligne
Re: [--] Jour de semaine d'une date donnée.
Hello jguinchard!
En fait, je cherche cette fonctionnalité,
pour une date envoyée en paramètre,
et non pour la date du jour,
reçue depuis une valeur système.
En fait, je cherche cette fonctionnalité,
pour une date envoyée en paramètre,
et non pour la date du jour,
reçue depuis une valeur système.
- jchd
- AutoIt MVPs (MVP)
- Messages : 2272
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [--] Jour de semaine d'une date donnée.
Pourquoi la fonction ne te convient pas ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Re: [--] Jour de semaine d'une date donnée.
Soit l'énoncé n'est pas bon, soit tu n'as pas regardé la doc !Returns the weekdaynumber for a given date.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
- martinbrait
- Niveau 4
- Messages : 55
- Enregistré le : ven. 06 mars 2009 17:17
- Status : Hors ligne
Re: [--] Jour de semaine d'une date donnée.
Hélas, vos réponses, je les ai lues trop tard,
alors j'ai perdu 5 heures.
Auriez-vous la gentillesse d'optimiser, pour mettre en évidence
quelques lacunes/points fort dans mon code?
Bonne soirée.
alors j'ai perdu 5 heures.
Auriez-vous la gentillesse d'optimiser, pour mettre en évidence
quelques lacunes/points fort dans mon code?
Bonne soirée.
Code : Tout sélectionner
#include<Date.au3>
; #INDEX# =======================================================================================================================
; Title .........: FnRetourJourSemaine
; AutoIt Version: 3.2.8++
; Language: English
; Description ...: On a souvent besoin d'identifier les jours de semaine dans
; un code pour gérer des paramètres, dans le traitement des données, hebdomadaire/weekend
; Author ........: martinbrait
; ===============================================================================================================================
; #CONSTANTS# ===================================================================================================================
;Global Const $UN_EXEMPLE = 1 ; Text format
; ===============================================================================================================================
;==============================================================================================================================
; ===============================================================================================================================
; #NO_DOC_FUNCTION# =============================================================================================================
; Not working/documented/implimented at this time
; ===============================================================================================================================
;
; ===============================================================================================================================
; #CURRENT# =====================================================================================================================
;JourDeCetteDate
;EstUnJourOuvre
; #FUNCTION# ====================================================================================================================
; Name...........: JourDeCetteDate
; Description ...: ;INDIQUE UN JOUR DE SEMAINE, D'UNE DATE POUR LE XXIème siècle UNIQUEMENT
; Syntax.........: JourDeCetteDate($DateDonnee)
; Parameters ....: $DateDonnee, au type anglais ou français, string
; Return values .: En cas de réussite, retourne un integer 0 à 6 correspondant au jour de la semaine
; Author ........: martinbrait
; Modified.......:
; Remarks .......: 2000 à 2999
; ;Envoyer en paramètre une date complète dont l'année est à extraire.
; Related .......:
; Link ..........;
; Example .......; Yes
;~ $JourChoisi="16/10/2014"
;~ MsgBox(64,"CONTROLE",JourDeCetteDate($JourChoisi))
; ===============================================================================================================================
Func JourDeCetteDate($DateDonnee)
$Calc = Partiel1($DateDonnee)+ Partiel2($DateDonnee)+ Partiel3($DateDonnee)
;MsgBox(64,"LE JOUR THEORIQUE EST: ",Mod ( $Calc,7))
Return Mod($Calc,7)
EndFunc
; #FUNCTION# ====================================================================================================================
; Name...........: EstUnJourOuvre
; Description ...: ;INDIQUE PAR BOOLEEN LE JOUR OUVRE
; Syntax.........: EstUnJourOuvre($DateDonnee)
; Parameters ....: $DateDonnee, Envoyer une date au type anglais ou français, string.
; Return values .: En cas de jour ouvré, retourne true, sinon retourne false
; Author ........: martinbrait
; Modified.......:
; Remarks .......: 2000 à 2999
; Related .......:
; Link ..........;
; Example .......; Yes
;~ $JourChoisi="16/10/2014"
;~ MsgBox(64,"CONTROLE",EstUnJourOuvre($JourChoisi))
; ===============================================================================================================================
Func EstUnJourOuvre($DateDonnee)
Local $JourOuvre
$JourOuvre=True
If JourDeCetteDate($DateDonnee) = 0 Or JourDeCetteDate($DateDonnee) = 6 Then
$JourOuvre=False
EndIf
Return $JourOuvre
EndFunc
; ===============================================================================================================================
; #INTERNAL_USE_ONLY#============================================================================================================
;
;==============================================================================================================================
Func Partiel1($DateDonnee)
#comments-start
Depuis l'ajustement du calendrier grégorien, sont bissextiles les années:
soit divisibles par 4 mais non divisibles par 100
soit divisibles par 400
Inversement, NE SONT PAS bissextiles, les années:
soit non divisibles par 4
soit divisibles par 100, mais pas par 400.
#comments-end
Local $NbLeapYears
;Pour une date située au XXIe siècle, prenons par exemple le 15 mars 2006.
;On ajoute le nombre d’années depuis le début du siècle + le nombre années bissextiles depuis le début du siècle soit 6+2 = 8.
$AnneeExtraite=PartFromDateString($DateDonnee,"annee")
For $i = 2000 to $AnneeExtraite
$NbLeapYears=$NbLeapYears+_DateIsLeapYear($i);On optimise le retour booleen de _DateIsLeapYear
Next
Return ($AnneeExtraite - 2000)+ $NbLeapYears
EndFunc
Func Partiel2($DateDonnee)
;Pour une date située au XXIe siècle, prenons par exemple le 15 mars 2006.
;Puis on ajoute le nombre de jours depuis le début du mois moins une valeur constante,
;quelque soit la date, qui est égale à 2, soit 15-2 = 13. Sous-total = 8 + 13 = 21
;Je teste avec un retour possible de valeur -1, au cas où le jour est le premier du mois!
Return PartFromDateString($DateDonnee,"jour")-2
EndFunc
Func Partiel3($DateDonnee)
;Pour une date située au XXIe siècle, prenons par exemple le 15 mars 2006.
;A ce stade, il vous faut connaitre les formules suivantes:
;Janvier = 0, Février et Mars = 3, Avril = 6, Mai=1, Juin = 4, Juillet = 6, Août = 2, Septembre = 5, Octobre = 0, Novembre = 3, Décembre = 5.
;On ajoute la valeur du mois de mars à notre sous-total, soit 3 + 21 = 24.
$LeMois=PartFromDateString($DateDonnee,"mois")
Select
Case $LeMois = "01"
Return 0
Case $LeMois = "02"
Return 3
Case $LeMois = "03"
Return 3
Case $LeMois = "04"
Return 6
Case $LeMois = "05"
Return 1
Case $LeMois = "06"
Return 4
Case $LeMois = "07"
Return 6
Case $LeMois = "08"
Return 2
Case $LeMois = "09"
Return 5
Case $LeMois = "10"
Return 0
Case $LeMois = "11"
Return 3
Case $LeMois = "12"
Return 5
EndSelect
EndFunc
Func PartFromDateString($DateDonnee,$ElementDeDate)
;On peut proposer sous forme de string, au format anglais ou français, la date choisie
; Traitement N°1 : Mettre la date au format Anglais.
If StringInstr($DateDonnee,"/")>0 Then
$aDate = StringSplit($DateDonnee, "/")
;_ArrayDisplay($aDate,"")
If StringLen($aDate[3])=4 Then
$dt = $aDate[3] & "/" & $aDate[2] & "/" & $aDate[1]
EndIf
Select
Case $ElementDeDate = "jour"
If StringLen($aDate[3])=4 Then
$jour = $aDate[1]
ElseIf StringLen($aDate[1])=4 Then
$jour = $aDate[3]
EndIf
Return $jour
Case $ElementDeDate = "mois"
$mois = $aDate[2]
Return $mois
Case $ElementDeDate = "annee"
If StringLen($aDate[3])=4 Then
$annee = $aDate[3]
ElseIf StringLen($aDate[1])=4 Then
$annee = $aDate[1]
EndIf
Return $annee
EndSelect
EndIf
;Si la fonction ne retourne rien, il y a une erreur
;dans le format de $DateDonnee, envoyée en paramètre.
EndFunc
;====================================
; #CORRECTION, AVEC _DatetoDayOfWeek#
;====================================
Func EstUnJourOuvreBIS($JourChoisi)
If StringInstr($JourChoisi,"/")>0 Then
$aDate = StringSplit($JourChoisi, "/")
;_ArrayDisplay($aDate,"")
$annee = $aDate[1]
$mois = $aDate[2]
$jour = $aDate[3]
If StringLen($aDate[3])=4 Then
$annee = $aDate[3]
$mois = $aDate[2]
$jour = $aDate[1]
EndIf
Local $JourOuvre
$JourOuvre=True
If _DatetoDayOfWeek($annee,$mois,$jour) = 7 Or _DatetoDayOfWeek($annee,$mois,$jour) = 1 Then
$JourOuvre=False
EndIf
Return $JourOuvre
EndIf
EndFunc
;~ MsgBox(4096, "", "Le jour choisi est-il un jour ouvré? " & EstUnJourOuvreBIS($JourChoisi))
Func JourDeLaSemaine()
;Avec la fonction existante _DatetoDayOfWeek
$JourChoisi="19/10/2014"
If StringInstr($JourChoisi,"/")>0 Then
$aDate = StringSplit($JourChoisi, "/")
;_ArrayDisplay($aDate,"")
$annee = $aDate[1]
$mois = $aDate[2]
$jour = $aDate[3]
If StringLen($aDate[3])=4 Then
$annee = $aDate[3]
$mois = $aDate[2]
$jour = $aDate[1]
EndIf
EndIf
;Avec la fonction existante revenait à faire
MsgBox(4096, "", "Le jour choisi vaut: " & _DatetoDayOfWeek($annee,$mois,$jour))
MsgBox(4096, "", "Le nom du jour choisi est : " & _DateDayOfWeek(_DatetoDayOfWeek($annee,$mois,$jour)))
EndFunc
;~ JourDeLaSemaine()
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [--] Jour de semaine d'une date donnée.
Pour avoir les jours en français, à part modifier l'udf tu peux faire comme ça
Code : Tout sélectionner
Local $aDay[8] = [ "", "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"]
Local $day = _DateToDayOfWeek($annee, $mois, $jour)
MsgBox(4096, "", "Le nom du jour choisi est : " & $aDay[$day])
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- martinbrait
- Niveau 4
- Messages : 55
- Enregistré le : ven. 06 mars 2009 17:17
- Status : Hors ligne
[R] Jour de semaine d'une date donnée.
Bon, ben j'ai plus qu' à aller me faire greffer des neurones
MERCI à tous
MERCI à tous