-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathGet-TruncatedDate.ps1
More file actions
100 lines (90 loc) · 2.12 KB
/
Get-TruncatedDate.ps1
File metadata and controls
100 lines (90 loc) · 2.12 KB
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
function Get-TruncatedDate {
<#
.NOTES
This
(Get-Date).Date
Does the same thing as
Get-Date | Get-TruncatedDate -Truncate 'Hour'
FYI only
#>
[CmdletBinding ()]
Param
(
[Parameter (Position=0,
ValueFromPipeline=$true)]
[datetime[]]
$Date = $(Get-Date),
[Parameter (Position=1)]
[ValidateSet (
'Millisecond',
'Second',
'Minute',
'Hour',
'Day',
'Month')]
[string]
$Truncate = 'Hour'
)
begin {}
process {
switch ($Truncate)
{
'MilliSecond' {
$DateSplat = @{
MilliSecond = 0
}
break
}
'Second' {
$DateSplat = @{
MilliSecond = 0
Second = 0
}
break
}
'Minute' {
$DateSplat = @{
MilliSecond = 0
Second = 0
Minute = 0
}
break
}
'Hour' {
$DateSplat = @{
MilliSecond = 0
Second = 0
Minute = 0
Hour = 0
}
break
}
'Day' {
$DateSplat = @{
MilliSecond = 0
Second = 0
Minute = 0
Hour = 0
Day = 1
}
break
}
'Month' {
$DateSplat = @{
MilliSecond = 0
Second = 0
Minute = 0
Hour = 0
Day = 1
Month = 1
}
break
}
} # end switch ($Truncate)
foreach ($Item in $Date)
{
$Item | Get-Date @DateSplat
}
} # end process block
end {}
} # end function Get-TruncatedDate