# JSON Schema validation fails: format 'date-time' rejects valid ISO 8601 timestamps with timezone offset

- **ID:** `data/json-schema-format-date-time-ambiguity`
- **Domain:** data
- **Category:** validation_error
- **Verification:** ai_generated
- **Fix Rate:** 85%

## Root Cause

JSON Schema's 'date-time' format in some validators (e.g., older versions of ajv) requires timestamps to end with 'Z' (UTC) and rejects valid ISO 8601 offsets like '+05:30' or '-08:00'.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| ajv 6.12.6 | active | — | — |
| jsonschema 4.17.3 | active | — | — |
| json-schema-validator 4.0.1 | active | — | — |

## Workarounds

1. **Update to a newer validator version that supports RFC 3339 full format: npm install ajv@8.12.0 (for JavaScript) or pip install jsonschema[format-nongpl] (for Python, which uses rfc3339-validator).** (90% success)
   ```
   Update to a newer validator version that supports RFC 3339 full format: npm install ajv@8.12.0 (for JavaScript) or pip install jsonschema[format-nongpl] (for Python, which uses rfc3339-validator).
   ```
2. **Use a custom format validator that accepts all ISO 8601 timezone offsets. Example in Python: from jsonschema import validators; from rfc3339_validator import validate_rfc3339; validator = validators.validate(..., format_checker=validators.Draft7Validator.FORMAT_CHECKER.replaces('date-time', lambda instance: validate_rfc3339(instance)))** (85% success)
   ```
   Use a custom format validator that accepts all ISO 8601 timezone offsets. Example in Python: from jsonschema import validators; from rfc3339_validator import validate_rfc3339; validator = validators.validate(..., format_checker=validators.Draft7Validator.FORMAT_CHECKER.replaces('date-time', lambda instance: validate_rfc3339(instance)))
   ```

## Dead Ends

- **** — Changes the data value, potentially breaking downstream timezone-sensitive logic. Also requires modifying the data source, which may not always be feasible. (60% fail)
- **** — Validates only the date part, ignoring time entirely, which may not meet the schema's intent. (75% fail)
