< Summary - Kestrun — Combined Coverage

Information
Class: Private.Yaml.Convert-DateTimeOffsetToDateTime
Assembly: Kestrun.PowerShell.Private
File(s): /home/runner/work/Kestrun/Kestrun/src/PowerShell/Kestrun/Private/Yaml/Convert-DateTimeOffsetToDateTime.ps1
Tag: Kestrun/Kestrun@2d87023b37eb91155071c91dd3d6a2eeb3004705
Line coverage
81%
Covered lines: 9
Uncovered lines: 2
Coverable lines: 11
Total lines: 44
Line coverage: 81.8%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 10/13/2025 - 16:52:37 Line coverage: 81.8% (9/11) Total lines: 44 Tag: Kestrun/Kestrun@10d476bee71c71ad215bb8ab59f219887b5b4a5e

Metrics

File(s)

/home/runner/work/Kestrun/Kestrun/src/PowerShell/Kestrun/Private/Yaml/Convert-DateTimeOffsetToDateTime.ps1

#LineLine coverage
 1<#
 2.SYNOPSIS
 3    Recursively converts DateTimeOffset instances to DateTime in a given object.
 4.DESCRIPTION
 5    This function takes an input object and recursively traverses its structure.
 6    If it encounters any DateTimeOffset instances, it converts them to DateTime.
 7    It handles nested dictionaries and lists, ensuring that all DateTimeOffset
 8    instances are converted regardless of their depth in the object hierarchy.
 9.PARAMETER InputObject
 10    The object to process, which may contain DateTimeOffset instances.
 11.EXAMPLE
 12    $obj = @{
 13        Date1 = [DateTimeOffset]::Now
 14        Nested = @{ Date2 = [DateTimeOffset]::UtcNow }
 15        List = @([DateTimeOffset]::Now, "string", 123)
 16    }
 17    $converted = Convert-DateTimeOffsetToDateTime $obj
 18    # $converted will have DateTime instances instead of DateTimeOffset.
 19.NOTES
 20    This function is useful for ensuring compatibility with systems that expect DateTime
 21    rather than DateTimeOffset, such as certain serialization scenarios.
 22#>
 23function Convert-DateTimeOffsetToDateTime {
 24    param(
 25        [Parameter()]
 26        [AllowNull()]
 27        $InputObject
 28    )
 229    if ($null -eq $InputObject) { return $null }
 130    if ($InputObject -is [DateTimeOffset]) {
 31        # Preserve naive timestamps (those without explicit zone) as 'Unspecified' kind so no offset is appended
 032        $dto = [DateTimeOffset]$InputObject
 033        return [DateTime]::SpecifyKind($dto.DateTime, [System.DateTimeKind]::Unspecified)
 34    }
 135    if ($InputObject -is [System.Collections.IDictionary]) {
 336        foreach ($k in @($InputObject.Keys)) { $InputObject[$k] = Convert-DateTimeOffsetToDateTime $InputObject[$k] }
 137        return $InputObject
 38    }
 139    if ($InputObject -is [System.Collections.IList]) {
 440        for ($j = 0; $j -lt $InputObject.Count; $j++) { $InputObject[$j] = Convert-DateTimeOffsetToDateTime $InputObject
 141        return $InputObject
 42    }
 143    return $InputObject
 44}