Tenemos el arreglo a este contratiempo, al menos eso esperamos. Si presentas preguntas deja tu comentario y sin tardar
Solución:
Una solución mucho más simple es llamar a la función DaysInMonth
[DateTime]::DaysInMonth(2018, 11)
Para el mes actual, se vería así:
$today = get-date
$lastDay = [DateTime]::DaysInMonth($today.Year, $today.Month)
$firstDate = [DateTime]::new($today.Year, $today.Month, 1)
$lastDate = [DateTime]::new($today.Year, $today.Month, $lastDay)
$firstDate
$lastDate
Esto también evita cualquier cambio de horario de verano que obstaculice y otras cosas extrañas que pueden suceder con las zonas horarias, etc.
O si todo lo que necesita son cadenas puras:
(get-date -Format "yyyy/MM") + "/1"
(get-date -Format "yyyy/MM") + "/" + [DateTime]::DaysInMonth((get-date).Year, (get-date).Month)
Una manera fácil es tomar el último día del año anterior y agregarle 1…12 meses:
1..12 | % (New-Object DateTime(2017,12,31)).AddMonths($_)
La salida estará en el formato de fecha/hora del usuario, en mi caso holandés:
woensdag 31 januari 2018 00:00:00
woensdag 28 februari 2018 00:00:00
zaterdag 31 maart 2018 00:00:00
maandag 30 april 2018 00:00:00
donderdag 31 mei 2018 00:00:00
zaterdag 30 juni 2018 00:00:00
dinsdag 31 juli 2018 00:00:00
vrijdag 31 augustus 2018 00:00:00
zondag 30 september 2018 00:00:00
woensdag 31 oktober 2018 00:00:00
vrijdag 30 november 2018 00:00:00
maandag 31 december 2018 00:00:00
Si es necesario, puede formatearlo como lo necesite, por ejemplo
1..12 | % (New-Object DateTime(2017,12,31)).AddMonths($_).ToString("yyyyMMdd")
20180131
20180228
20180331
20180430
20180531
20180630
20180731
20180831
20180930
20181031
20181130
20181231
Esto parece bastante simple
$firstDate = [DateTime]::new($reportDate.Year, $reportDate.Month, 1)
$lastDate=$firstDate.AddMonths(1).AddDays(-1)
Sección de Reseñas y Valoraciones
Recuerda algo, que tienes la capacidad de valorar esta división si te ayudó.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)