@@ -1236,7 +1236,9 @@ def resolve_annotation(
12361236TimestampStyle = 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