Private/ConvertTo-UnixTime.ps1
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 |
function ConvertTo-UnixTime { <# .SYNOPSIS Convert datetime objects to UNIX time. .DESCRIPTION Convert System.DateTime objects to UNIX time. .INPUTS System.DateTime .NOTES - Troy Lindsay - Twitter: @troylindsay42 - GitHub: tlindsay42 .EXAMPLE ConvertTo-UnixTime -Date ( Get-Date -Date '2018-07-21 10:33:18' ) Returns '1532187198'. .EXAMPLE ( Get-Date -Date '2018-07-21 10:33:18' ) | ConvertTo-UnixTime Processes the pipeline value and returns '1532187198'. .EXAMPLE ConvertTo-UnixTime ( Get-Date -Date '2018-07-21 10:33:18' ) Uses positional parameter and returns '1532187198'. .LINK https://tlindsay42.github.io/PSRyver/Private/ConvertTo-UnixTime/ .LINK https://github.com/tlindsay42/PSRyver/blob/master/PSRyver/Private/ConvertTo-UnixTime.ps1 #> [CmdletBinding( HelpUri = 'https://tlindsay42.github.io/PSRyver/Private/ConvertTo-UnixTime/' )] [OutputType( [Int32] )] param ( # The System.DateTime formatted date & time. [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [DateTime] $Date ) begin { $function = $MyInvocation.MyCommand.Name Write-Verbose -Message "Beginning: '${function}'." } process { Write-Verbose -Message ( "Processing: '${function}' with ParameterSetName '$( $PSCmdlet.ParameterSetName )' and Parameters: " + ( $PSBoundParameters | Remove-SensitiveData | Format-Table -AutoSize | Out-String ) ) $unixEpochStart = New-Object -TypeName 'DateTime' -ArgumentList 1970, 1, 1, 0, 0, 0, ( [DateTimeKind]::Utc ) [Int32] ( $Date.ToUniversalTime() - $unixEpochStart ).TotalSeconds } end { Write-Verbose -Message "Ending: '${function}'." } } |