type_bridge.attribute.datetimetz¶
datetimetz
¶
DateTimeTZ attribute type for TypeDB.
DateTimeTZ
¶
Bases: Attribute
DateTimeTZ attribute type that accepts timezone-aware datetime values.
This maps to TypeDB's 'datetime-tz' type, which requires timezone information. The datetime must have tzinfo set (e.g., using datetime.timezone.utc or zoneinfo).
Example
from datetime import datetime, timezone
class CreatedAt(DateTimeTZ): pass
Usage with timezone¶
event = Event(created_at=CreatedAt(datetime(2024, 1, 15, 10, 30, 45, tzinfo=timezone.utc)))
Convert to DateTime¶
naive_dt = created_at.strip_timezone() # Implicit: just strip tz naive_dt_jst = created_at.strip_timezone(timezone(timedelta(hours=9))) # Explicit: convert to JST, then strip
Initialize DateTimeTZ attribute with a timezone-aware datetime value.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
value
|
datetime
|
The timezone-aware datetime value to store |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the datetime does not have timezone information |
Source code in type_bridge/attribute/datetimetz.py
strip_timezone
¶
Convert DateTimeTZ to DateTime by stripping timezone information.
Implicit conversion (tz=None): Just strip timezone as-is Explicit conversion (tz provided): Convert to specified timezone first, then strip
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tz
|
timezone | None
|
Optional timezone to convert to before stripping. If None, strips timezone without conversion. If provided, converts to that timezone first. |
None
|
Returns:
| Type | Description |
|---|---|
DateTime
|
DateTime instance with naive datetime |
Example
Implicit: strip timezone as-is¶
naive = dt_tz.strip_timezone()
Explicit: convert to JST (+9), then strip¶
from datetime import timezone, timedelta jst = timezone(timedelta(hours=9)) naive_jst = dt_tz.strip_timezone(jst)
Source code in type_bridge/attribute/datetimetz.py
__add__
¶
Add a Duration to this DateTimeTZ.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
other
|
Any
|
A Duration to add to this timezone-aware datetime |
required |
Returns:
| Type | Description |
|---|---|
DateTimeTZ
|
New DateTimeTZ with the duration added |
Note
Duration addition respects timezone changes (DST, etc.)
Example
from type_bridge import Duration from datetime import datetime, timezone dt = DateTimeTZ(datetime(2024, 1, 31, 14, 0, 0, tzinfo=timezone.utc)) duration = Duration("P1M") result = dt + duration # DateTimeTZ(2024-02-28 14:00:00+00:00)