   may occur more than once. Since `NaiveDateTime` is not
   validated against a timezone, such errors would go unnoticed.
   """
-  defstruct [:year, :month, :day, :hour, :minute, :second, :microsecond, calendar: Calendar.ISO]
+  defstruct [:year, :month, :day, :hour, :minute, :second, :micro_second, calendar: Calendar.ISO]
   @type t :: %__MODULE__{year: Calendar.year, month: Calendar.month, day: Calendar.day,
                          calendar: Calendar.calendar, hour: Calendar.hour, minute: Calendar.minute,
-                         second: Calendar.second, microsecond: Calendar.microsecond}
+                         second: Calendar.second, micro_second: Calendar.micro_second}
 end
 
 defmodule DateTime do

  @type hour        :: integer
  @type minute      :: integer
  @type second      :: integer
  @type microsecond :: integer

  @typedoc "A calendar implementation"
  @type calendar    :: module

  @moduledoc """
  A time implementation.
  """
  defstruct [:hour, :minute, :second, :micro_second]
  @type t :: %__MODULE__{hour: Calendar.hour, minute: Calendar.minute,
                         second: Calendar.second, micro_second: Calendar.micro_second}
end

defmodule NaiveDateTime do
