 
   @doc """
   Returns the difference between two `Time` structs.
+
+  The answer can be returned in any `unit` available from `t:System.time_unit/0`.
+
+  This function returns the difference in seconds where seconds are measured
+  according to `Calendar.ISO`.
   """
   @spec diff(Time.t, Time.t, System.time_unit) :: integer
   def diff(%Time{} = time1, %Time{} = time2, unit \\ :second) do

  end

  @doc """
  Calculates the difference between two dates,
  in a full number of days, returning `{:ok, difference}`.

  Note that only `Date` structs that follow the same or
  compatible calendars can be compared this way.
  If two calendars are not compatible,
  `{:error, :incompatible_calendars}` is returned.

  ## Examples


      # from Gregorian seconds
      iex> NaiveDateTime.add(~N[0000-01-01 00:00:00], 63579428950)
      ~N[2014-10-02 00:29:10]

  """
  @spec add(t, integer, System.time_unit) :: t
  def add(%NaiveDateTime{microsecond: {_microsecond, precision}} = naive_datetime,
