 
       iex> Time.diff(~T[00:29:12], ~T[00:29:10], :microsecond)
       2_000_000
+
       iex> Time.diff(~T[00:29:10], ~T[00:29:12], :microsecond)
       -2_000_000
 
+      iex> Time.diff(~T[12:30:12], ~T[11:00:00], :minute)
+      90
+
+      iex> Time.diff(~T[12:30:12], ~T[11:00:00], :hour)
+      1
+
+      iex> Time.diff(~T[00:01:20], ~T[00:00:40], :minute)
+      0
+
   """
   @doc since: "1.5.0"
-  @spec diff(Calendar.time(), Calendar.time(), System.time_unit()) :: integer
+  @spec diff(Calendar.time(), Calendar.time(), time_unit()) :: integer()
   def diff(time1, time2, unit \\ :second)
+
+  def diff(%{calendar: Calendar.ISO} = time1, %{calendar: Calendar.ISO} = time2, :hour) do
+    time1
+    |> diff(time2, :second)
+    |> div(3600)
+  end
+
+  def diff(%{calendar: Calendar.ISO} = time1, %{calendar: Calendar.ISO} = time2, :minute) do
+    time1
+    |> diff(time2, :second)
+    |> div(60)
+  end
 
   def diff(
         %{

  additional information about a date or time zone is ignored when calculating
  the difference.

  The answer can be returned in any `unit` available from
  `t:System.time_unit/0`. If the first time value is earlier than
  the second, a negative number is returned.

  This function returns the difference in seconds where seconds
  are measured according to `Calendar.ISO`.

  ## Examples



  ## Helpers

  defp time_unit_to_microseconds(number, :hour),
    do: time_unit_to_microseconds(number * 60 * 60, :second)

  defp time_unit_to_microseconds(number, :minute),
    do: time_unit_to_microseconds(number * 60, :second)

  defp time_unit_to_microseconds(number, unit),
    do: System.convert_time_unit(number, unit, :microsecond)

  defp to_day_fraction(%{
         hour: hour,
         minute: minute,
