Question
Test heure
- LEPRETRE Didier
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 1
- Remerciements reçus 0
il y a 14 ans 3 semaines #11231
par LEPRETRE Didier
Test heure a été créé par LEPRETRE Didier
Bonjour,
Je viens d'écrire une fonction permettant de connaitre les jours ouvrés d'une année ou encore de savoir si une journée est ouvrée ou pas. Voici le code :
[code:1]
# Calcul des jours féries pour une année
function Calcul-Paques([int]$annee)
{
$g = $annee % 19;
$c = [system.math]::Floor($annee / 100)
$c_4 = [system.math]::Floor($c / 4)
$e = [system.math]::Floor((8 * $c + 13) / 25)
$h = (19 * $g + $c - $c_4 - $e + 15) % 30;
$k = [system.math]::Floor($h / 28)
$p = [system.math]::Floor(29 / ($h + 1))
$q = [system.math]::Floor((21 - $g) / 11)
$i = ($k * $p * $q - 1) * $k + $h
$b = [system.math]::Floor($annee / 4) + $annee
$j1 = ($b + $i + 2 + $c_4) - $c;
$j2 = $j1 % 7;
$r = 28 + $i - $j2;
if ($r -gt 31)
{
$z = [datetime]\"04/$($r-31)/$annee\"
}
else
{
$z = [datetime]\"03/$($r)/$annee\"
}
return $z
}
Function Calcul-JoursFeries([int]$annee, [Boolean]$show)
{
$paques = Calcul-Paques $annee
$JoursFeries = @()
$JoursFeries = $JoursFeries + [datetime]\"01/01/$annee\"
$JoursFeries = $JoursFeries + $paques
$JoursFeries = $JoursFeries + $paques.AddDays(1)
$JoursFeries = $JoursFeries + [datetime]\"05/01/$annee\"
$JoursFeries = $JoursFeries + [datetime]\"05/08/$annee\"
$JoursFeries = $JoursFeries + $paques.AddDays(39)
$JoursFeries = $JoursFeries + $paques.AddDays(7*7)
$JoursFeries = $JoursFeries + $paques.AddDays(7*7+1)
$JoursFeries = $JoursFeries + [datetime]\"07/14/$annee\"
$JoursFeries = $JoursFeries + [datetime]\"08/15/$annee\"
$JoursFeries = $JoursFeries + [datetime]\"11/01/$annee\"
$JoursFeries = $JoursFeries + [datetime]\"11/11/$annee\"
$JoursFeries = $JoursFeries + [datetime]\"12/25/$annee\"
if ($show)
{
Write-Host \"Jour de l'an : $(([datetime]\"01/01/$annee\"«»).ToString(\"D\"«»))\"
Write-Host \"Dimanche de Pâques : $($paques.ToString(\"D\"«»))\"
Write-Host \"Lundi de Pâques : $(($paques.AddDays(1)).ToString(\"D\"«»))\"
Write-Host \"Fête du travail : $(([datetime]\"05/01/$annee\"«»).ToString(\"D\"«»))\"
Write-Host \"Armistice 1945 : $(([datetime]\"05/08/$annee\"«»).ToString(\"D\"«»))\"
Write-Host \"Jeudi de l'ascension : $(($paques.AddDays(39)).ToString(\"D\"«»))\"
Write-Host \"Pentecôte : $(($paques.AddDays(7*7)).ToString(\"D\"«»))\"
Write-Host \"Lundi de Pentecôte : $(($paques.AddDays(7*7+1)).ToString(\"D\"«»))\"
Write-Host \"Fête Nationle : $(([datetime]\"07/14/$annee\"«»).ToString(\"D\"«»))\"
Write-Host \"Assomption : $(([datetime]\"08/15/$annee\"«»).ToString(\"D\"«»))\"
Write-Host \"Toussaint : $(([datetime]\"11/01/$annee\"«»).ToString(\"D\"«»))\"
Write-Host \"Armistice 1911 : $(([datetime]\"11/11/$annee\"«»).ToString(\"D\"«»))\"
Write-Host \"Noël : $(([datetime]\"12/25/$annee\"«»).ToString(\"D\"«»))\"
}
return $JoursFeries
}
Function Tester-JO([datetime]$jour)
{
$JF = Calcul-JoursFeries $jour.Year
foreach ($j in $JF)
{
if ( $j -eq $jour) { return \"JF\" }
}
$dow = $jour.DayOfWeek
if ( $dow -eq \"Saturday\" -or $dow -eq \"Sunday\"«»)
{
return \"JNO\"
}
return \"JO\"
}
Function Tester-HO([datetime]$heure, [datetime]$hdeb, [datetime]$hfin)
{
$JO = Tester-JO $heure
if ( $JO -eq \"JF\" -or $JO -eq \"JNO\"«») { return \"HNO\" }
}
Clear-Host
Calcul-JoursFeries 2012 $true
Tester-JO (Get-Date).AddDays(7)
[/code:1]
J'ai besoin maintenant de tester si je suis dans une heure ouvrée. Je récupère une données texte \"hhmmss\" et je souhaite vérifier si elle est comprise entre h1m1s1 et h2m2s2
Je n'arrive pas à m'en sortir avec des variables de type [datetime] car justement il y a la notion de date. Quelle est la meilleure méthode selon vous pour ce type de test ?
Bien cordialement,
Je viens d'écrire une fonction permettant de connaitre les jours ouvrés d'une année ou encore de savoir si une journée est ouvrée ou pas. Voici le code :
[code:1]
# Calcul des jours féries pour une année
function Calcul-Paques([int]$annee)
{
$g = $annee % 19;
$c = [system.math]::Floor($annee / 100)
$c_4 = [system.math]::Floor($c / 4)
$e = [system.math]::Floor((8 * $c + 13) / 25)
$h = (19 * $g + $c - $c_4 - $e + 15) % 30;
$k = [system.math]::Floor($h / 28)
$p = [system.math]::Floor(29 / ($h + 1))
$q = [system.math]::Floor((21 - $g) / 11)
$i = ($k * $p * $q - 1) * $k + $h
$b = [system.math]::Floor($annee / 4) + $annee
$j1 = ($b + $i + 2 + $c_4) - $c;
$j2 = $j1 % 7;
$r = 28 + $i - $j2;
if ($r -gt 31)
{
$z = [datetime]\"04/$($r-31)/$annee\"
}
else
{
$z = [datetime]\"03/$($r)/$annee\"
}
return $z
}
Function Calcul-JoursFeries([int]$annee, [Boolean]$show)
{
$paques = Calcul-Paques $annee
$JoursFeries = @()
$JoursFeries = $JoursFeries + [datetime]\"01/01/$annee\"
$JoursFeries = $JoursFeries + $paques
$JoursFeries = $JoursFeries + $paques.AddDays(1)
$JoursFeries = $JoursFeries + [datetime]\"05/01/$annee\"
$JoursFeries = $JoursFeries + [datetime]\"05/08/$annee\"
$JoursFeries = $JoursFeries + $paques.AddDays(39)
$JoursFeries = $JoursFeries + $paques.AddDays(7*7)
$JoursFeries = $JoursFeries + $paques.AddDays(7*7+1)
$JoursFeries = $JoursFeries + [datetime]\"07/14/$annee\"
$JoursFeries = $JoursFeries + [datetime]\"08/15/$annee\"
$JoursFeries = $JoursFeries + [datetime]\"11/01/$annee\"
$JoursFeries = $JoursFeries + [datetime]\"11/11/$annee\"
$JoursFeries = $JoursFeries + [datetime]\"12/25/$annee\"
if ($show)
{
Write-Host \"Jour de l'an : $(([datetime]\"01/01/$annee\"«»).ToString(\"D\"«»))\"
Write-Host \"Dimanche de Pâques : $($paques.ToString(\"D\"«»))\"
Write-Host \"Lundi de Pâques : $(($paques.AddDays(1)).ToString(\"D\"«»))\"
Write-Host \"Fête du travail : $(([datetime]\"05/01/$annee\"«»).ToString(\"D\"«»))\"
Write-Host \"Armistice 1945 : $(([datetime]\"05/08/$annee\"«»).ToString(\"D\"«»))\"
Write-Host \"Jeudi de l'ascension : $(($paques.AddDays(39)).ToString(\"D\"«»))\"
Write-Host \"Pentecôte : $(($paques.AddDays(7*7)).ToString(\"D\"«»))\"
Write-Host \"Lundi de Pentecôte : $(($paques.AddDays(7*7+1)).ToString(\"D\"«»))\"
Write-Host \"Fête Nationle : $(([datetime]\"07/14/$annee\"«»).ToString(\"D\"«»))\"
Write-Host \"Assomption : $(([datetime]\"08/15/$annee\"«»).ToString(\"D\"«»))\"
Write-Host \"Toussaint : $(([datetime]\"11/01/$annee\"«»).ToString(\"D\"«»))\"
Write-Host \"Armistice 1911 : $(([datetime]\"11/11/$annee\"«»).ToString(\"D\"«»))\"
Write-Host \"Noël : $(([datetime]\"12/25/$annee\"«»).ToString(\"D\"«»))\"
}
return $JoursFeries
}
Function Tester-JO([datetime]$jour)
{
$JF = Calcul-JoursFeries $jour.Year
foreach ($j in $JF)
{
if ( $j -eq $jour) { return \"JF\" }
}
$dow = $jour.DayOfWeek
if ( $dow -eq \"Saturday\" -or $dow -eq \"Sunday\"«»)
{
return \"JNO\"
}
return \"JO\"
}
Function Tester-HO([datetime]$heure, [datetime]$hdeb, [datetime]$hfin)
{
$JO = Tester-JO $heure
if ( $JO -eq \"JF\" -or $JO -eq \"JNO\"«») { return \"HNO\" }
}
Clear-Host
Calcul-JoursFeries 2012 $true
Tester-JO (Get-Date).AddDays(7)
[/code:1]
J'ai besoin maintenant de tester si je suis dans une heure ouvrée. Je récupère une données texte \"hhmmss\" et je souhaite vérifier si elle est comprise entre h1m1s1 et h2m2s2
Je n'arrive pas à m'en sortir avec des variables de type [datetime] car justement il y a la notion de date. Quelle est la meilleure méthode selon vous pour ce type de test ?
Bien cordialement,
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 14 ans 3 semaines #11234
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Test heure
Salut,
consulte la doc de la classe TimeSpan .
consulte la doc de la classe TimeSpan .
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.039 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Test heure