Support for relative datetimes #1331
Answered
by
YuriiMotov
AngellusMortis
asked this question in
Questions
-
First Check
Commit to Help
Example Codeimport typer
import dateparser
app = typer.Typer()
def relative_datetime(ctx: typer.Context, value: str, param: Parameter) -> datetime:
if dt := dateparser.parse(value):
return dt
raise typer.BadParameter("Must be a ISO 8601 format or human readable relative format", ctx, param)
@app.callback()
def main(ctx: typer.Context, start: str) -> None:
start_dt = relative_datetime(ctx, start, ctx.command.params[0])
# app "1 hour ago"
if __name__ == "__main__":
typer.run(main)DescriptionSupport human readable/relative datetimes Wanted SolutionThe popular package Wanted Codeimport typer
app = typer.Typer()
@app.callback()
def main(ctx: typer.Context, start: datetime) -> None:
pass
# app "1 hour ago"
if __name__ == "__main__":
typer.run(main)AlternativesNo response Operating SystemLinux Operating System DetailsNo response Typer Version0.6.1 Python Version3.10 Additional ContextNo response |
Beta Was this translation helpful? Give feedback.
Answered by
YuriiMotov
Sep 18, 2025
Replies: 1 comment
-
|
You can support custom types by specifying from datetime import datetime
from typing import Annotated
import dateparser
import typer
app = typer.Typer()
def relative_datetime(value: str) -> datetime:
if dt := dateparser.parse(value):
return dt
raise typer.BadParameter(
"Must be a ISO 8601 format or human readable relative format"
)
@app.callback()
def main(
start: Annotated[datetime, typer.Argument(parser=relative_datetime)],
) -> None:
typer.echo(start)
# app "1 hour ago"
if __name__ == "__main__":
typer.run(main) |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
YuriiMotov
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You can support custom types by specifying
parserparameter: