---
name: parse_iso_datetime
kind: function
lang: py
domain: core
version: "1.0.0"
purity: pure
signature: "parse_iso_datetime(value: str) -> datetime"
description: "Parsea un datetime ISO 8601 tolerando fracciones de segundo con mas de 6 digitos. Windows produce timestamps como 2026-02-21T13:20:23.1470042+08:00 donde la fraccion excede los 6 digitos que acepta datetime.fromisoformat."
tags: [datetime, iso8601, parse, time, windows]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: ["re", "datetime"]
params:
  - name: value
    desc: "String en formato ISO 8601 (posiblemente con fracciones de segundo excesivas)"
output: "Objeto datetime parseado y normalizado"
tested: true
tests:
  - "ISO normal sin fraccion"
  - "ISO con Z como UTC"
  - "ISO con fraccion de mas de 6 digitos"
  - "ISO con timezone offset"
test_file_path: "python/functions/core/parse_iso_datetime_test.py"
file_path: "python/functions/core/parse_iso_datetime.py"
---

## Ejemplo

```python
from parse_iso_datetime import parse_iso_datetime

# Timestamp normal
dt = parse_iso_datetime("2026-02-21T13:20:23+08:00")

# Timestamp Windows con 7 digitos en fraccion
dt = parse_iso_datetime("2026-02-21T13:20:23.1470042+08:00")

# UTC con Z
dt = parse_iso_datetime("2026-02-21T13:20:23Z")
```

## Notas

Algoritmo:
1. Regex `(\.\d{6})\d+` trunca la fraccion de segundo a exactamente 6 digitos.
2. Reemplaza `Z` final por `+00:00` para compatibilidad con `fromisoformat`.
3. Llama a `datetime.fromisoformat(normalized)`.

Funcion pura. No hace I/O ni tiene efectos secundarios.
