Bonjour,
je cherche à programmer cet exemple :
Nombre de jours 3
Date début : 29/11/2017
Date fin : 02/12/2017
=> 1 jour pour le mois 11
=> 2 jours pour le moi 12
comment je peux la développer en C# ?
merci de me guider.
Cordialement,
Bonjour,
je cherche à programmer cet exemple :
Nombre de jours 3
Date début : 29/11/2017
Date fin : 02/12/2017
=> 1 jour pour le mois 11
=> 2 jours pour le moi 12
comment je peux la développer en C# ?
merci de me guider.
Cordialement,
Bonjour,
Pas compris ce que tu voulais faire.
Cependant as tu regardé Datime.AddDays(...); et TimeSpan ?
Par ce que tu semble vouloir ajouter des jours, et faire une différence entre des dates... A savoir que la soustraction de 2 DateTime donne un TimeSpan.
J@ck.
Si j'ai bien compris ton problème, tu souhaites faire un algo te permettant, suivant une date de début et une date de fin, de compter le nombre de jours par mois qu'il y a entre les deux dates.
Un autre exemple serait :
C'est bien ça?Variables d'entrée :
Date début : 24/08/2017
Date fin : 2/12/2017
Résultat :
7 jours pour le mois 08
30 jours pour le mois 09
31 jours pour le mois 10
30 jours pour le mois 11
2 jours pour le mois 12
Je te propose ceci. Si quelqu'un à mieux ...
Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 $sdebut = "29/11/2017" $sfin = "02/12/2017" #$sdebut = "24/08/2017" #$sfin = "02/12/2017" $start = [datetime]::ParseExact($sdebut, "dd/MM/yyyy", $null) $end = [datetime]::ParseExact($sfin, "dd/MM/yyyy", $null) $currentDay = $start $currentLastDay = $currentDay while ($currentLastDay -lt $end) { $currentLastDay = (New-Object DateTime $currentLastDay.Year, $currentLastDay.Month, 01).AddMonths(1).AddDays(-1) if ($currentLastDay -gt $end) { $currentLastDay = $end } $Delta = ($currentLastDay - $currentDay).TotalDays Write-Host "$Delta jours pour le mois $($currentLastDay.Month) de l'année $($currentLastDay.Year)" $currentDay = $currentDay.AddDays($Delta) $currentLastDay = $currentLastDay.AddDays(1) }
Allez, à mon tour, c'est un peu bourrin mais ça marche:
Au suivant !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 static void Main(string[] args) { var from = new DateTime(2017, 2, 6); var to = new DateTime(2017, 5, 8); var daysByMonth = EnumerateDays(from, to) .GroupBy(d => d.Month) .Select(l => new Tuple<int, int>(l.First().Month, l.Count())); foreach (var i in daysByMonth) Console.WriteLine($"{i.Item1}:{i.Item2}"); } public static IEnumerable<DateTime> EnumerateDays(DateTime from, DateTime to) { for (var current = from; current <= to; current = current.AddDays(1)) yield return current; }![]()
Mais lol. Je croyait être sur le forum PowerShell.
On peut voir le résultat Noxen ?
2:23
3:31
4:30
5:8
L'idée est d'extraire chaque jour entre les deux dates (j'ai dit que c'était bourrin ; mais à mon sens la charge de calcul et de mémoire est négligeable à moins de calculer sur des siècles), grouper par le mois et pour chaque groupe récupérer le mois et la taille du groupe dans un tuple ; à vous de voir comment vous voulez récupérer les données en sortie.
Partager