< 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@6135d944f8787fb570e4dfbacac6e80312799a86
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 12/01/2025 - 20:55:19 Line coverage: 81.8% (9/11) Total lines: 44 Tag: Kestrun/Kestrun@638a27c2dd54103f693f023b6ba5f56a884caafa

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}