 
       iex> Calendar.ISO.parse_utc_datetime("-2015-01-23T23:50:07,123+02:30")
       {:ok, {-2015, 1, 23, 21, 20, 7, {123000, 3}}, 9000}
+      iex> Calendar.ISO.parse_utc_datetime("+2015-01-23T23:50:07Z")
+      {:ok, {2015, 1, 23, 23, 50, 7, {0, 0}}, 0}
 
       iex> Calendar.ISO.parse_utc_datetime("2015-01-23P23:50:07")
       {:error, :invalid_format}

defmodule Calendar.ISO do
  @moduledoc """
  A calendar implementation that follows to ISO 8601.

  This calendar implements the proleptic Gregorian calendar and
  is therefore compatible with the calendar used in most countries
  today. The proleptic means the Gregorian rules for leap years are
  applied for all time, consequently the dates give different results
  before the year 1583 from when the Gregorian calendar was adopted.

  Given this is the default calendar used by Elixir, it has one
  difference compared to the ISO8601 specification in that it allows
  a whitespace instead of `T` as a separator between date and times
  both when parsing and formatting. Strict formatting can be done
  by using the `to_iso8601` found in `NaiveDateTime` and `DateTime`.

  Note that while ISO 8601 allows times and datetimes to specify
  24:00:00 as the zero hour of the next day, this notation is not
  supported by Elixir.
  """

  @behaviour Calendar

  def parse_naive_datetime("-" <> string) when is_binary(string),
    do: parse_naive_datetime(string, -1)

  def parse_naive_datetime("+" <> string) when is_binary(string),
    do: parse_naive_datetime(string, 1)

  def parse_naive_datetime(string) when is_binary(string),
    do: parse_naive_datetime(string, 1)

