Skip to content

Commit eec2af7

Browse files
committed
✨ Support formatting datetime.time in format_dt
1 parent 49090d7 commit eec2af7

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

discord/utils.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1236,7 +1236,9 @@ def resolve_annotation(
12361236
TimestampStyle = Literal["f", "F", "d", "D", "t", "T", "R"]
12371237

12381238

1239-
def format_dt(dt: datetime.datetime, /, style: TimestampStyle | None = None) -> str:
1239+
def format_dt(
1240+
dt: datetime.datetime | datetime.time, /, style: TimestampStyle | None = None
1241+
) -> str:
12401242
"""A helper function to format a :class:`datetime.datetime` for presentation within Discord.
12411243
12421244
This allows for a locale-independent way of presenting data using Discord specific Markdown.
@@ -1266,7 +1268,7 @@ def format_dt(dt: datetime.datetime, /, style: TimestampStyle | None = None) ->
12661268
12671269
Parameters
12681270
----------
1269-
dt: :class:`datetime.datetime`
1271+
dt: Union[:class:`datetime.datetime`, :class:`datetime.time`]
12701272
The datetime to format.
12711273
style: :class:`str`
12721274
The style to format the datetime with.
@@ -1276,6 +1278,14 @@ def format_dt(dt: datetime.datetime, /, style: TimestampStyle | None = None) ->
12761278
:class:`str`
12771279
The formatted string.
12781280
"""
1281+
if isinstance(dt, datetime.time):
1282+
if style is None:
1283+
style = "t"
1284+
elif style not in ("t", "T"):
1285+
raise ValueError("Time styles must be 't' or 'T'.")
1286+
dt = datetime.datetime.combine(
1287+
datetime.datetime.fromtimestamp(DISCORD_EPOCH, tz=datetime.UTC), dt
1288+
)
12791289
if style is None:
12801290
return f"<t:{int(dt.timestamp())}>"
12811291
return f"<t:{int(dt.timestamp())}:{style}>"

0 commit comments

Comments
 (0)