Chronic
Like Chronic, but for Elixir.
Usage
Add it as a dependency to your project:
defp deps do
[
{:chronic, "~> 2.0.2"},
]
endThen you can use it wherever you wish:
{ :ok, time, offset } = Chronic.parse("tuesday 9am")
The time returned is a Calendar.NaiveDateTime from the calendar package. The offset returned is a time zone offset.
If Chronic encounters a format it doesn't recognise, it will return an error tuple:
{ :error, :unknown_format } = Chronic.parse("definitely not a known format, no siree")
If Calendar.NaiveDateTime doesn't know what you mean (i.e. if you ask for a date such as "January 32nd"), then you'll see this error instead:
{:error, :invalid_datetime} = Chronic.parse("January 32nd")
If you're not sure what you're going to get back, use a case:
input = "some user input goes here"
case Chronic.parse(input) do
{ :ok, time, offset } ->
# do something with time + offset
{ :error, :unknown_format } ->
# present a good error message to the user
end