diff --git a/doc/31-Changelog.md b/doc/31-Changelog.md index 9a3bfcd..844b3e8 100644 --- a/doc/31-Changelog.md +++ b/doc/31-Changelog.md @@ -14,6 +14,8 @@ Released closed milestones can be found on [GitHub](https://github.com/Icinga/ic ### Enhancements * [#136](https://github.com/Icinga/icinga-powershell-framework/pull/136) Adds support to ignore empty check packages and return `Ok` instead of `Unknown` if `-IgnoreEmptyPackage` is set on `New-IcingaCheckPackage` +* [#137](https://github.com/Icinga/icinga-powershell-framework/issues/137) Adds Cmdlet to compare a DateTime object with the current DateTime and return the offset as Integer in seconds + ### Bugfixes diff --git a/lib/core/tools/Compare-IcingaUnixTimeWithDateTime.psm1 b/lib/core/tools/Compare-IcingaUnixTimeWithDateTime.psm1 new file mode 100644 index 0000000..776564b --- /dev/null +++ b/lib/core/tools/Compare-IcingaUnixTimeWithDateTime.psm1 @@ -0,0 +1,27 @@ +<# +.SYNOPSIS + Compare-IcingaUnixTimeWithDateTime compares a DateTime-Object with the current DateTime and returns the offset between these values as Integer +.DESCRIPTION + Compare-IcingaUnixTimeWithDateTime compares a DateTime-Object with the current DateTime and returns the offset between these values as Integer +.PARAMETER DateTime + DateTime object you want to compare with the Universal Time +.INPUTS + System.DateTime +.OUTPUTS + System.Int64 +#> +function Compare-IcingaUnixTimeWithDateTime() { + param ( + [datetime]$DateTime + ); + + # This is when the computer starts counting time + $UnixEpochStart = (New-Object DateTime 1970, 1, 1, 0, 0, 0, ([DateTimeKind]::Utc)); + # We convert the creation and current time to seconds + $CreationTime = [long][System.Math]::Floor((($DateTime.ToUniversalTime() - $UnixEpochStart).Ticks / [timespan]::TicksPerSecond)); + $CurrentTime = Get-IcingaUnixTime; + + # To find out, from the snapshot creation time to the current time, how many seconds are, + # you have to subtract from the (Current Time in s) the (Creation Time in s) + return ($CurrentTime - $CreationTime); +}