View Source Changelog

unreleased

1.2.0 (2023-12-06)

  • Drop Timex as dependency. This required a custom IANA file parser for determining timezones and rules that was able to parse timezone abbreviations. Doing so requires the use of Elixir functions introduced in Elixir 1.11.
  • Bump NimbleParsec which requires Elixir 1.12.

1.1.5 (2022-10-07)

  • Switch to pre-compiled combinators so that NimbleParsec is not needed during compilation-- why have everyone else compile this when we can compile it before publishing?
  • Update examples to be a Livebook
  • Fix serial parser matching on time
  • Fix assume_date option with time results from parse function.
  • Support Month-Year format; please note that this essentially requires a fallback assume_date since there is not a data structure that only describes Month and Year in Elixir.

1.1.4 (2022-10-05)

  • Update GitHub Repo references

1.1.3 (2021-10-24)

  • Stricter time parsing by requiring time separators. For example, 949 used to be parsed as 09:49:00, but is now considered not valid. This is to help decrease false positives of nonsensical times such as 25:00 am (incorrectly parsed as 02:05:00). Thanks @fcapovilla (PR #46)

1.1.2 (2021-06-14)

  • Correct handling of 12:xx:xx AM timestamps (12hr). These were incorrectly parsed as 12:xx:xx (24hr) timestamps when they should have been 00:xx:xx (24hr) timestamps.

  • Lock Timex to >= 3.2.1 and <= 3.7.2 to avoid timezone conversion issues when using to_utc: true. Looks like there are some breaking changes (for us)

1.1.1 (2021-02-06)

  • Adjust tokenizer to prefer month/day before of day/month when those are the only found tokens. Thanks @mwean raising the issue.

1.1.0 (2020-10-17)

  • Add option use_1904_date_system for the serial parser. It defaults to false. Most spreadsheet applications use the 1900 date system, but Microsoft Excel on Macintosh in particular used the 1904 date system [@fcapovilla].

1.0.0 (2020-02-05)

Breaking

  • Change parse_datetime to no longer assume time. Previously, it would assume 00:00:00 if it could not be parsed. This is replaced with an opt-in option assume_time. See next point. If you relied on this, to upgrade add the option; eg: DateTimeParser.parse_datetime(string, assume_time: true)
  • Change parse_datetime to no longer convert DateTime to UTC timezone. If you relied on this, to upgrade add the option; eg: DateTimeParser.parse_datetime(string, to_utc: true)
  • Change parse_date to no longer assume a date. Previously, it would assume the current date, and replace the found information from the string. This is replaced with an opt-in option of assume_date. If you relied on this, to upgrade add the option; eg: DateTimeParser.parse_date(string, assume_date: true)

Bugs

  • Fix a UTC conversion bug between Daylight/Standard time (#20). If you're using an earlier version and converting to UTC, please upgrade to >= 1.0.0-rc2 immediately.
  • Fix an epoch subsecond parsing bug (#16) (thanks @tmr08c)
  • Updated for compatibility with Elixir 1.10.0

Features

  • Add parse/2 that will respond with the best match. This function accepts all options introduced below.
  • Change parse_datetime/1 to parse_datetime/2 to accept options:
    • assume_time: true | %Time{} | false with the default of false.

  • Change parse_date/1 to parse_date/2 to accept options:
    • assume_date: true | %Date{} | false with the default of false.

  • Add support for parsing negative epoch times. (#24) (thanks @tmr08c)
  • Add bang variants, parse!/2, parse_datetime!/2, parse_time!/2, and parse_date!/2
  • Added parsers: [] option to add or disable parsers. This is helpful if you are don't want to consider Serial or Epoch timestamps.

0.2.0 (2019-09-26)

  • Add Serial time support

0.1.4 (2019-09-03)

  • Refactor
  • Support subsecond parsing to 24 digits (yoctoseconds) [thanks @myfreeweb]

0.1.3 (2019-08-02)

  • Support parsing Unix epoch times from strings
  • Fix microsecond parsing

0.1.2 (2019-07-11)

  • Validate days of month. Previously it would allow invalid days such as Feb 30. Now it will check if the year is a leap year and allow up to 29, and otherwise 28 for Feb. It will also reject day 31 on months without 31 days.

0.1.1 (2019-07-03)

  • Fix PM 12-hr conversion. The bug would convert 12:34PM to 24:34 which is not valid

0.1.0 (2019-06-24)

  • Add DateTimeParser.parse_datetime/2
  • Add DateTimeParser.parse_date/1
  • Add DateTimeParser.parse_time/1