Question Test heure

Plus d'informations
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,

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 3 semaines #11234 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Test heure
Salut,
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
Propulsé par Kunena