Sophie

Sophie

distrib > Mageia > 7 > i586 > media > core-release > by-pkgid > 016232f1d9a3f7bee85855d35a2bca58 > files > 47

elixir-doc-1.7.2-1.mga7.noarch.rpm

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="generator" content="ExDoc v0.19.1">
    <title>Date – Elixir v1.7.2</title>
    <link rel="stylesheet" href="dist/app-240d7fc7e5.css" />
      <link rel="canonical" href="https://hexdocs.pm/elixir/v1.7/Date.html" />
    <script src="dist/sidebar_items-cdf4e58b19.js"></script>
    
  </head>
  <body data-type="modules">
    <script>try { if(localStorage.getItem('night-mode')) document.body.className += ' night-mode'; } catch (e) { }</script>
    <div class="main">
<button class="sidebar-button sidebar-toggle">
  <span class="icon-menu" aria-hidden="true"></span>
  <span class="sr-only">Toggle Sidebar</span>
</button>
<button class="sidebar-button night-mode-toggle">
  <span class="icon-theme" aria-hidden="true"></span>
  <span class="sr-only">Toggle Theme</span>
</button>
<section class="sidebar">

  <a href="http://elixir-lang.org/docs.html" class="sidebar-projectLink">
    <div class="sidebar-projectDetails">
      <h1 class="sidebar-projectName">
Elixir      </h1>
      <h2 class="sidebar-projectVersion">
        v1.7.2
      </h2>
    </div>
      <img src="assets/logo.png" alt="Elixir" class="sidebar-projectImage">
  </a>

  <form class="sidebar-search" action="search.html">
    <button type="submit" class="search-button">
      <span class="icon-search" aria-hidden="true"></span>
    </button>
    <input name="q" type="text" id="search-list" class="search-input" placeholder="Search" aria-label="Search" autocomplete="off" />
  </form>

  <ul class="sidebar-listNav">
    <li><a id="extras-list" href="#full-list">Pages</a></li>

      <li><a id="modules-list" href="#full-list">Modules</a></li>

      <li><a id="exceptions-list" href="#full-list">Exceptions</a></li>

  </ul>
  <div class="gradient"></div>
  <ul id="full-list" class="sidebar-fullList"></ul>
</section>

<section class="content">
  <div class="content-outer">
    <div id="content" class="content-inner">


      <h1>
        <small class="visible-xs">Elixir v1.7.2</small>
Date        
          <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L1" title="View Source" class="view-source" rel="help">
            <span class="icon-code" aria-hidden="true"></span>
            <span class="sr-only">View Source</span>
          </a>
      </h1>


        <section id="moduledoc">
<p>A Date struct and functions.</p>
<p>The Date struct contains the fields year, month, day and calendar.
New dates can be built with the <a href="#new/3"><code class="inline">new/3</code></a> function or using the
<a href="Kernel.html#sigil_D/2"><code class="inline">~D</code></a> sigil:</p>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="ld">~D[2000-01-01]</span><span class="w">
</span><span class="ld">~D[2000-01-01]</span></code></pre>
<p>Both <a href="#new/3"><code class="inline">new/3</code></a> and sigil return a struct where the date fields can
be accessed directly:</p>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">date</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ld">~D[2000-01-01]</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="n">date</span><span class="o">.</span><span class="n">year</span><span class="w">
</span><span class="mi">2000</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="n">date</span><span class="o">.</span><span class="n">month</span><span class="w">
</span><span class="mi">1</span></code></pre>
<p>The functions on this module work with the <a href="Date.html#content"><code class="inline">Date</code></a> struct as well
as any struct that contains the same fields as the <a href="Date.html#content"><code class="inline">Date</code></a> struct,
such as <a href="NaiveDateTime.html"><code class="inline">NaiveDateTime</code></a> and <a href="DateTime.html"><code class="inline">DateTime</code></a>. Such functions expect
<a href="Calendar.html#t:date/0"><code class="inline">Calendar.date/0</code></a> in their typespecs (instead of <a href="#t:t/0"><code class="inline">t/0</code></a>).</p>
<p>Developers should avoid creating the Date structs directly
and instead rely on the functions provided by this module as well
as the ones in 3rd party calendar libraries.</p>
<h2 id="module-comparing-dates" class="section-heading">
  <a href="#module-comparing-dates" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Comparing dates
</h2>

<p>Comparisons in Elixir using <a href="Kernel.html#==/2"><code class="inline">==/2</code></a>, <a href="Kernel.html#%253E/2"><code class="inline">&gt;/2</code></a>, <a href="Kernel.html#%253C/2"><code class="inline">&lt;/2</code></a> and similar are structural
and based on the <a href="Date.html#content"><code class="inline">Date</code></a> struct fields. For proper comparison between
dates, use the <a href="#compare/2"><code class="inline">compare/2</code></a> function.</p>
<h2 id="module-using-epochs" class="section-heading">
  <a href="#module-using-epochs" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Using epochs
</h2>

<p>The <a href="#add/2"><code class="inline">add/2</code></a> and <a href="#diff/2"><code class="inline">diff/2</code></a> functions can be used for computing dates
or retrieving the number of days between instants. For example, if there
is an interest in computing the number of days from the Unix epoch
(1970-01-01):</p>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">diff</span><span class="p" data-group-id="0241887982-1">(</span><span class="ld">~D[2010-04-17]</span><span class="p">,</span><span class="w"> </span><span class="ld">~D[1970-01-01]</span><span class="p" data-group-id="0241887982-1">)</span><span class="w">
</span><span class="mi">14716</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">add</span><span class="p" data-group-id="0241887982-2">(</span><span class="ld">~D[1970-01-01]</span><span class="p">,</span><span class="w"> </span><span class="mi">14716</span><span class="p" data-group-id="0241887982-2">)</span><span class="w">
</span><span class="ld">~D[2010-04-17]</span></code></pre>
<p>Those functions are optimized to deal with common epochs, such
as the Unix Epoch above or the Gregorian Epoch (0000-01-01).</p>
        </section>

        <section id="summary" class="details-list">
          <h1 class="section-heading">
            <a class="hover-link" href="#summary">
              <span class="icon-link" aria-hidden="true"></span>
              <span class="sr-only">Link to this section</span>
            </a>
            Summary
          </h1>
  <div class="summary-types summary">
    <h2>
      <a href="#types">Types</a>
    </h2>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#t:t/0">t()</a>
  </div>
</div>
  </div>
          
  <div class="summary-functions summary">
    <h2>
      <a href="#functions">Functions</a>
    </h2>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#add/2">add(date, days)</a>
  </div>
    <div class="summary-synopsis"><p>Adds the number of days to the given <code class="inline">date</code></p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#compare/2">compare(date1, date2)</a>
  </div>
    <div class="summary-synopsis"><p>Compares two date structs</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#convert!/2">convert!(date, calendar)</a>
  </div>
    <div class="summary-synopsis"><p>Similar to <a href="Date.html#convert/2"><code class="inline">Date.convert/2</code></a>, but raises an <a href="ArgumentError.html"><code class="inline">ArgumentError</code></a>
if the conversion between the two calendars is not possible</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#convert/2">convert(date, calendar)</a>
  </div>
    <div class="summary-synopsis"><p>Converts the given <code class="inline">date</code> from its calendar to the given <code class="inline">calendar</code></p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#day_of_week/1">day_of_week(date)</a>
  </div>
    <div class="summary-synopsis"><p>Calculates the day of the week of a given <code class="inline">date</code></p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#days_in_month/1">days_in_month(date)</a>
  </div>
    <div class="summary-synopsis"><p>Returns the number of days in the given <code class="inline">date</code> month</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#diff/2">diff(date1, date2)</a>
  </div>
    <div class="summary-synopsis"><p>Calculates the difference between two dates, in a full number of days</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#from_erl!/2">from_erl!(tuple, calendar \\ Calendar.ISO)</a>
  </div>
    <div class="summary-synopsis"><p>Converts an Erlang date tuple but raises for invalid dates</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#from_erl/2">from_erl(tuple, calendar \\ Calendar.ISO)</a>
  </div>
    <div class="summary-synopsis"><p>Converts an Erlang date tuple to a <a href="Date.html#content"><code class="inline">Date</code></a> struct</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#from_iso8601!/2">from_iso8601!(string, calendar \\ Calendar.ISO)</a>
  </div>
    <div class="summary-synopsis"><p>Parses the extended “Dates” format described by
<a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601:2004</a></p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#from_iso8601/2">from_iso8601(string, calendar \\ Calendar.ISO)</a>
  </div>
    <div class="summary-synopsis"><p>Parses the extended “Dates” format described by
<a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601:2004</a></p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#leap_year?/1">leap_year?(date)</a>
  </div>
    <div class="summary-synopsis"><p>Returns <code class="inline">true</code> if the year in the given <code class="inline">date</code> is a leap year</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#months_in_year/1">months_in_year(date)</a>
  </div>
    <div class="summary-synopsis"><p>Returns the number of months in the given <code class="inline">date</code> year</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#new/4">new(year, month, day, calendar \\ Calendar.ISO)</a>
  </div>
    <div class="summary-synopsis"><p>Builds a new ISO date</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#range/2">range(first, last)</a>
  </div>
    <div class="summary-synopsis"><p>Returns a range of dates</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#to_erl/1">to_erl(date)</a>
  </div>
    <div class="summary-synopsis"><p>Converts the given <code class="inline">date</code> to an Erlang date tuple</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#to_iso8601/2">to_iso8601(date, format \\ :extended)</a>
  </div>
    <div class="summary-synopsis"><p>Converts the given <code class="inline">date</code> to
<a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601:2004</a></p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#to_string/1">to_string(date)</a>
  </div>
    <div class="summary-synopsis"><p>Converts the given date to a string according to its calendar</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#utc_today/1">utc_today(calendar \\ Calendar.ISO)</a>
  </div>
    <div class="summary-synopsis"><p>Returns the current date in UTC</p>
</div>
</div>
  </div>
          
        </section>

        <section id="types" class="details-list">
          <h1 class="section-heading">
            <a class="hover-link" href="#types">
              <span class="icon-link" aria-hidden="true"></span>
              <span class="sr-only">Link to this section</span>
            </a>
            Types
          </h1>
          <div class="types-list">
<div class="detail" id="t:t/0">
    <div class="detail-header">
    <a href="#t:t/0" class="detail-link" title="Link to this type">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this type</span>
    </a>
    <span class="signature">t()</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L56" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>t() :: %Date{
  calendar: <a href="Calendar.html#t:calendar/0">Calendar.calendar</a>(),
  day: <a href="Calendar.html#t:day/0">Calendar.day</a>(),
  month: <a href="Calendar.html#t:month/0">Calendar.month</a>(),
  year: <a href="Calendar.html#t:year/0">Calendar.year</a>()
}</pre>
      </div>
  </div>
  <section class="docstring">
  </section>
</div>
          </div>
        </section>


        <section id="functions" class="details-list">
          <h1 class="section-heading">
            <a class="hover-link" href="#functions">
              <span class="icon-link" aria-hidden="true"></span>
              <span class="sr-only">Link to this section</span>
            </a>
            Functions
          </h1>
<div class="detail" id="add/2">
    <div class="detail-header">
    <a href="#add/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">add(date, days)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L559" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
    
      <span class="note">(since 1.5.0)</span>
    
      <div class="specs">
          <pre>add(<a href="Calendar.html#t:date/0">Calendar.date</a>(), <a href="typespecs.html#basic-types">integer</a>()) :: <a href="#t:t/0">t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Adds the number of days to the given <code class="inline">date</code>.</p>
<p>The days are counted as Gregorian days. The date is returned in the same
calendar as it was given in.</p>
<h2 id="add/2-examples" class="section-heading">
  <a href="#add/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">add</span><span class="p" data-group-id="5952808623-1">(</span><span class="ld">~D[2000-01-03]</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">2</span><span class="p" data-group-id="5952808623-1">)</span><span class="w">
</span><span class="ld">~D[2000-01-01]</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">add</span><span class="p" data-group-id="5952808623-2">(</span><span class="ld">~D[2000-01-01]</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p" data-group-id="5952808623-2">)</span><span class="w">
</span><span class="ld">~D[2000-01-03]</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">add</span><span class="p" data-group-id="5952808623-3">(</span><span class="ld">~N[2000-01-01 09:00:00]</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p" data-group-id="5952808623-3">)</span><span class="w">
</span><span class="ld">~D[2000-01-03]</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">add</span><span class="p" data-group-id="5952808623-4">(</span><span class="ld">~D[-0010-01-01]</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mi">2</span><span class="p" data-group-id="5952808623-4">)</span><span class="w">
</span><span class="ld">~D[-0011-12-30]</span></code></pre>
  </section>
</div>
<div class="detail" id="compare/2">
    <div class="detail-header">
    <a href="#compare/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">compare(date1, date2)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L456" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
    
      <span class="note">(since 1.4.0)</span>
    
      <div class="specs">
          <pre>compare(<a href="Calendar.html#t:date/0">Calendar.date</a>(), <a href="Calendar.html#t:date/0">Calendar.date</a>()) :: :lt | :eq | :gt</pre>
      </div>
  </div>
  <section class="docstring">
<p>Compares two date structs.</p>
<p>Returns <code class="inline">:gt</code> if first date is later than the second
and <code class="inline">:lt</code> for vice versa. If the two dates are equal
<code class="inline">:eq</code> is returned.</p>
<h2 id="compare/2-examples" class="section-heading">
  <a href="#compare/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">compare</span><span class="p" data-group-id="1654633864-1">(</span><span class="ld">~D[2016-04-16]</span><span class="p">,</span><span class="w"> </span><span class="ld">~D[2016-04-28]</span><span class="p" data-group-id="1654633864-1">)</span><span class="w">
</span><span class="ss">:lt</span></code></pre>
<p>This function can also be used to compare across more
complex calendar types by considering only the date fields:</p>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">compare</span><span class="p" data-group-id="3065017045-1">(</span><span class="ld">~D[2016-04-16]</span><span class="p">,</span><span class="w"> </span><span class="ld">~N[2016-04-28 01:23:45]</span><span class="p" data-group-id="3065017045-1">)</span><span class="w">
</span><span class="ss">:lt</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">compare</span><span class="p" data-group-id="3065017045-2">(</span><span class="ld">~D[2016-04-16]</span><span class="p">,</span><span class="w"> </span><span class="ld">~N[2016-04-16 01:23:45]</span><span class="p" data-group-id="3065017045-2">)</span><span class="w">
</span><span class="ss">:eq</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">compare</span><span class="p" data-group-id="3065017045-3">(</span><span class="ld">~N[2016-04-16 12:34:56]</span><span class="p">,</span><span class="w"> </span><span class="ld">~N[2016-04-16 01:23:45]</span><span class="p" data-group-id="3065017045-3">)</span><span class="w">
</span><span class="ss">:eq</span></code></pre>
  </section>
</div>
<div class="detail" id="convert!/2">
    <div class="detail-header">
    <a href="#convert!/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">convert!(date, calendar)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L527" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
    
      <span class="note">(since 1.5.0)</span>
    
      <div class="specs">
          <pre>convert!(<a href="Calendar.html#t:date/0">Calendar.date</a>(), <a href="Calendar.html#t:calendar/0">Calendar.calendar</a>()) :: <a href="#t:t/0">t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Similar to <a href="Date.html#convert/2"><code class="inline">Date.convert/2</code></a>, but raises an <a href="ArgumentError.html"><code class="inline">ArgumentError</code></a>
if the conversion between the two calendars is not possible.</p>
<h2 id="convert!/2-examples" class="section-heading">
  <a href="#convert!/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<p>Imagine someone implements <code class="inline">Calendar.Holocene</code>, a calendar based on the
Gregorian calendar that adds exactly 10,000 years to the current Gregorian
year:</p>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">convert!</span><span class="p" data-group-id="6020702572-1">(</span><span class="ld">~D[2000-01-01]</span><span class="p">,</span><span class="w"> </span><span class="nc">Calendar.Holocene</span><span class="p" data-group-id="6020702572-1">)</span><span class="w">
</span><span class="p" data-group-id="6020702572-2">%</span><span class="nc" data-group-id="6020702572-2">Date</span><span class="p" data-group-id="6020702572-2">{</span><span class="ss">calendar</span><span class="p">:</span><span class="w"> </span><span class="nc">Calendar.Holocene</span><span class="p">,</span><span class="w"> </span><span class="ss">year</span><span class="p">:</span><span class="w"> </span><span class="mi">12000</span><span class="p">,</span><span class="w"> </span><span class="ss">month</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">day</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p" data-group-id="6020702572-2">}</span></code></pre>
  </section>
</div>
<div class="detail" id="convert/2">
    <div class="detail-header">
    <a href="#convert/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">convert(date, calendar)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L498" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
    
      <span class="note">(since 1.5.0)</span>
    
      <div class="specs">
          <pre>convert(<a href="Calendar.html#t:date/0">Calendar.date</a>(), <a href="Calendar.html#t:calendar/0">Calendar.calendar</a>()) ::
  {:ok, <a href="#t:t/0">t</a>()} | {:error, :incompatible_calendars}</pre>
      </div>
  </div>
  <section class="docstring">
<p>Converts the given <code class="inline">date</code> from its calendar to the given <code class="inline">calendar</code>.</p>
<p>Returns <code class="inline">{:ok, date}</code> if the calendars are compatible,
or <code class="inline">{:error, :incompatible_calendars}</code> if they are not.</p>
<p>See also <a href="Calendar.html#compatible_calendars?/2"><code class="inline">Calendar.compatible_calendars?/2</code></a>.</p>
<h2 id="convert/2-examples" class="section-heading">
  <a href="#convert/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<p>Imagine someone implements <code class="inline">Calendar.Holocene</code>, a calendar based on the
Gregorian calendar that adds exactly 10,000 years to the current Gregorian
year:</p>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">convert</span><span class="p" data-group-id="3756437759-1">(</span><span class="ld">~D[2000-01-01]</span><span class="p">,</span><span class="w"> </span><span class="nc">Calendar.Holocene</span><span class="p" data-group-id="3756437759-1">)</span><span class="w">
</span><span class="p" data-group-id="3756437759-2">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="3756437759-3">%</span><span class="nc" data-group-id="3756437759-3">Date</span><span class="p" data-group-id="3756437759-3">{</span><span class="ss">calendar</span><span class="p">:</span><span class="w"> </span><span class="nc">Calendar.Holocene</span><span class="p">,</span><span class="w"> </span><span class="ss">year</span><span class="p">:</span><span class="w"> </span><span class="mi">12000</span><span class="p">,</span><span class="w"> </span><span class="ss">month</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="ss">day</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p" data-group-id="3756437759-3">}</span><span class="p" data-group-id="3756437759-2">}</span></code></pre>
  </section>
</div>
<div class="detail" id="day_of_week/1">
    <div class="detail-header">
    <a href="#day_of_week/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">day_of_week(date)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L645" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
    
      <span class="note">(since 1.4.0)</span>
    
      <div class="specs">
          <pre>day_of_week(<a href="Calendar.html#t:date/0">Calendar.date</a>()) :: <a href="typespecs.html#basic-types">non_neg_integer</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Calculates the day of the week of a given <code class="inline">date</code>.</p>
<p>Returns the day of the week as an integer. For the ISO 8601
calendar (the default), it is an integer from 1 to 7, where
1 is Monday and 7 is Sunday.</p>
<h2 id="day_of_week/1-examples" class="section-heading">
  <a href="#day_of_week/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">day_of_week</span><span class="p" data-group-id="2449485066-1">(</span><span class="ld">~D[2016-10-31]</span><span class="p" data-group-id="2449485066-1">)</span><span class="w">
</span><span class="mi">1</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">day_of_week</span><span class="p" data-group-id="2449485066-2">(</span><span class="ld">~D[2016-11-01]</span><span class="p" data-group-id="2449485066-2">)</span><span class="w">
</span><span class="mi">2</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">day_of_week</span><span class="p" data-group-id="2449485066-3">(</span><span class="ld">~N[2016-11-01 01:23:45]</span><span class="p" data-group-id="2449485066-3">)</span><span class="w">
</span><span class="mi">2</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">day_of_week</span><span class="p" data-group-id="2449485066-4">(</span><span class="ld">~D[-0015-10-30]</span><span class="p" data-group-id="2449485066-4">)</span><span class="w">
</span><span class="mi">3</span></code></pre>
  </section>
</div>
<div class="detail" id="days_in_month/1">
    <div class="detail-header">
    <a href="#days_in_month/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">days_in_month(date)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L175" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
    
      <span class="note">(since 1.4.0)</span>
    
      <div class="specs">
          <pre>days_in_month(<a href="Calendar.html#t:date/0">Calendar.date</a>()) :: <a href="Calendar.html#t:day/0">Calendar.day</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Returns the number of days in the given <code class="inline">date</code> month.</p>
<h2 id="days_in_month/1-examples" class="section-heading">
  <a href="#days_in_month/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">days_in_month</span><span class="p" data-group-id="9241073668-1">(</span><span class="ld">~D[1900-01-13]</span><span class="p" data-group-id="9241073668-1">)</span><span class="w">
</span><span class="mi">31</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">days_in_month</span><span class="p" data-group-id="9241073668-2">(</span><span class="ld">~D[1900-02-09]</span><span class="p" data-group-id="9241073668-2">)</span><span class="w">
</span><span class="mi">28</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">days_in_month</span><span class="p" data-group-id="9241073668-3">(</span><span class="ld">~N[2000-02-20 01:23:45]</span><span class="p" data-group-id="9241073668-3">)</span><span class="w">
</span><span class="mi">29</span></code></pre>
  </section>
</div>
<div class="detail" id="diff/2">
    <div class="detail-header">
    <a href="#diff/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">diff(date1, date2)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L593" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
    
      <span class="note">(since 1.5.0)</span>
    
      <div class="specs">
          <pre>diff(<a href="Calendar.html#t:date/0">Calendar.date</a>(), <a href="Calendar.html#t:date/0">Calendar.date</a>()) :: <a href="typespecs.html#basic-types">integer</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Calculates the difference between two dates, in a full number of days.</p>
<p>It returns the number of Gregorian days between the dates. Only <a href="Date.html#content"><code class="inline">Date</code></a>
structs that follow the same or compatible calendars can be compared
this way. If two calendars are not compatible, it will raise.</p>
<h2 id="diff/2-examples" class="section-heading">
  <a href="#diff/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">diff</span><span class="p" data-group-id="2887843712-1">(</span><span class="ld">~D[2000-01-03]</span><span class="p">,</span><span class="w"> </span><span class="ld">~D[2000-01-01]</span><span class="p" data-group-id="2887843712-1">)</span><span class="w">
</span><span class="mi">2</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">diff</span><span class="p" data-group-id="2887843712-2">(</span><span class="ld">~D[2000-01-01]</span><span class="p">,</span><span class="w"> </span><span class="ld">~D[2000-01-03]</span><span class="p" data-group-id="2887843712-2">)</span><span class="w">
</span><span class="o">-</span><span class="mi">2</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">diff</span><span class="p" data-group-id="2887843712-3">(</span><span class="ld">~D[0000-01-02]</span><span class="p">,</span><span class="w"> </span><span class="ld">~D[-0001-12-30]</span><span class="p" data-group-id="2887843712-3">)</span><span class="w">
</span><span class="mi">3</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">diff</span><span class="p" data-group-id="2887843712-4">(</span><span class="ld">~D[2000-01-01]</span><span class="p">,</span><span class="w"> </span><span class="ld">~N[2000-01-03 09:00:00]</span><span class="p" data-group-id="2887843712-4">)</span><span class="w">
</span><span class="o">-</span><span class="mi">2</span></code></pre>
  </section>
</div>
<div class="detail" id="from_erl!/2">
  
    <span id="from_erl!/1"></span>
  <div class="detail-header">
    <a href="#from_erl!/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">from_erl!(tuple, calendar \\ Calendar.ISO)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L409" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>from_erl!(<a href="http://www.erlang.org/doc/man/calendar.html#type-date">:calendar.date</a>(), <a href="Calendar.html#t:calendar/0">Calendar.calendar</a>()) :: <a href="#t:t/0">t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Converts an Erlang date tuple but raises for invalid dates.</p>
<h2 id="from_erl!/2-examples" class="section-heading">
  <a href="#from_erl!/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">from_erl!</span><span class="p" data-group-id="1807944515-1">(</span><span class="p" data-group-id="1807944515-2">{</span><span class="mi">2000</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p" data-group-id="1807944515-2">}</span><span class="p" data-group-id="1807944515-1">)</span><span class="w">
</span><span class="ld">~D[2000-01-01]</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">from_erl!</span><span class="p" data-group-id="1807944515-3">(</span><span class="p" data-group-id="1807944515-4">{</span><span class="mi">2000</span><span class="p">,</span><span class="w"> </span><span class="mi">13</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p" data-group-id="1807944515-4">}</span><span class="p" data-group-id="1807944515-3">)</span><span class="w">
</span><span class="gt">** (ArgumentError) cannot convert {2000, 13, 1} to date, reason: :invalid_date</span></code></pre>
  </section>
</div>
<div class="detail" id="from_erl/2">
  
    <span id="from_erl/1"></span>
  <div class="detail-header">
    <a href="#from_erl/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">from_erl(tuple, calendar \\ Calendar.ISO)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L393" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>from_erl(<a href="http://www.erlang.org/doc/man/calendar.html#type-date">:calendar.date</a>(), <a href="Calendar.html#t:calendar/0">Calendar.calendar</a>()) ::
  {:ok, <a href="#t:t/0">t</a>()} | {:error, <a href="typespecs.html#basic-types">atom</a>()}</pre>
      </div>
  </div>
  <section class="docstring">
<p>Converts an Erlang date tuple to a <a href="Date.html#content"><code class="inline">Date</code></a> struct.</p>
<p>Only supports converting dates which are in the ISO calendar,
or other calendars in which the days also start at midnight.
Attempting to convert dates from other calendars will return an error tuple.</p>
<h2 id="from_erl/2-examples" class="section-heading">
  <a href="#from_erl/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">from_erl</span><span class="p" data-group-id="8272622653-1">(</span><span class="p" data-group-id="8272622653-2">{</span><span class="mi">2000</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p" data-group-id="8272622653-2">}</span><span class="p" data-group-id="8272622653-1">)</span><span class="w">
</span><span class="p" data-group-id="8272622653-3">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="ld">~D[2000-01-01]</span><span class="p" data-group-id="8272622653-3">}</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">from_erl</span><span class="p" data-group-id="8272622653-4">(</span><span class="p" data-group-id="8272622653-5">{</span><span class="mi">2000</span><span class="p">,</span><span class="w"> </span><span class="mi">13</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p" data-group-id="8272622653-5">}</span><span class="p" data-group-id="8272622653-4">)</span><span class="w">
</span><span class="p" data-group-id="8272622653-6">{</span><span class="ss">:error</span><span class="p">,</span><span class="w"> </span><span class="ss">:invalid_date</span><span class="p" data-group-id="8272622653-6">}</span></code></pre>
  </section>
</div>
<div class="detail" id="from_iso8601!/2">
  
    <span id="from_iso8601!/1"></span>
  <div class="detail-header">
    <a href="#from_iso8601!/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">from_iso8601!(string, calendar \\ Calendar.ISO)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L306" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>from_iso8601!(<a href="String.html#t:t/0">String.t</a>(), <a href="Calendar.html#t:calendar/0">Calendar.calendar</a>()) :: <a href="#t:t/0">t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Parses the extended “Dates” format described by
<a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601:2004</a>.</p>
<p>Raises if the format is invalid.</p>
<h2 id="from_iso8601!/2-examples" class="section-heading">
  <a href="#from_iso8601!/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">from_iso8601!</span><span class="p" data-group-id="4186404626-1">(</span><span class="s">&quot;2015-01-23&quot;</span><span class="p" data-group-id="4186404626-1">)</span><span class="w">
</span><span class="ld">~D[2015-01-23]</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">from_iso8601!</span><span class="p" data-group-id="4186404626-2">(</span><span class="s">&quot;2015:01:23&quot;</span><span class="p" data-group-id="4186404626-2">)</span><span class="w">
</span><span class="gt">** (ArgumentError) cannot parse &quot;2015:01:23&quot; as date, reason: :invalid_format</span></code></pre>
  </section>
</div>
<div class="detail" id="from_iso8601/2">
  
    <span id="from_iso8601/1"></span>
  <div class="detail-header">
    <a href="#from_iso8601/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">from_iso8601(string, calendar \\ Calendar.ISO)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L272" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>from_iso8601(<a href="String.html#t:t/0">String.t</a>(), <a href="Calendar.html#t:calendar/0">Calendar.calendar</a>()) ::
  {:ok, <a href="#t:t/0">t</a>()} | {:error, <a href="typespecs.html#basic-types">atom</a>()}</pre>
      </div>
  </div>
  <section class="docstring">
<p>Parses the extended “Dates” format described by
<a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601:2004</a>.</p>
<h2 id="from_iso8601/2-examples" class="section-heading">
  <a href="#from_iso8601/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">from_iso8601</span><span class="p" data-group-id="9704981588-1">(</span><span class="s">&quot;2015-01-23&quot;</span><span class="p" data-group-id="9704981588-1">)</span><span class="w">
</span><span class="p" data-group-id="9704981588-2">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="ld">~D[2015-01-23]</span><span class="p" data-group-id="9704981588-2">}</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">from_iso8601</span><span class="p" data-group-id="9704981588-3">(</span><span class="s">&quot;2015:01:23&quot;</span><span class="p" data-group-id="9704981588-3">)</span><span class="w">
</span><span class="p" data-group-id="9704981588-4">{</span><span class="ss">:error</span><span class="p">,</span><span class="w"> </span><span class="ss">:invalid_format</span><span class="p" data-group-id="9704981588-4">}</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">from_iso8601</span><span class="p" data-group-id="9704981588-5">(</span><span class="s">&quot;2015-01-32&quot;</span><span class="p" data-group-id="9704981588-5">)</span><span class="w">
</span><span class="p" data-group-id="9704981588-6">{</span><span class="ss">:error</span><span class="p">,</span><span class="w"> </span><span class="ss">:invalid_date</span><span class="p" data-group-id="9704981588-6">}</span></code></pre>
  </section>
</div>
<div class="detail" id="leap_year?/1">
    <div class="detail-header">
    <a href="#leap_year?/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">leap_year?(date)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L154" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
    
      <span class="note">(since 1.4.0)</span>
    
      <div class="specs">
          <pre>leap_year?(<a href="Calendar.html#t:date/0">Calendar.date</a>()) :: <a href="typespecs.html#built-in-types">boolean</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Returns <code class="inline">true</code> if the year in the given <code class="inline">date</code> is a leap year.</p>
<h2 id="leap_year?/1-examples" class="section-heading">
  <a href="#leap_year?/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">leap_year?</span><span class="p" data-group-id="8884119962-1">(</span><span class="ld">~D[2000-01-01]</span><span class="p" data-group-id="8884119962-1">)</span><span class="w">
</span><span class="no">true</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">leap_year?</span><span class="p" data-group-id="8884119962-2">(</span><span class="ld">~D[2001-01-01]</span><span class="p" data-group-id="8884119962-2">)</span><span class="w">
</span><span class="no">false</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">leap_year?</span><span class="p" data-group-id="8884119962-3">(</span><span class="ld">~D[2004-01-01]</span><span class="p" data-group-id="8884119962-3">)</span><span class="w">
</span><span class="no">true</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">leap_year?</span><span class="p" data-group-id="8884119962-4">(</span><span class="ld">~D[1900-01-01]</span><span class="p" data-group-id="8884119962-4">)</span><span class="w">
</span><span class="no">false</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">leap_year?</span><span class="p" data-group-id="8884119962-5">(</span><span class="ld">~N[2004-01-01 01:23:45]</span><span class="p" data-group-id="8884119962-5">)</span><span class="w">
</span><span class="no">true</span></code></pre>
  </section>
</div>
<div class="detail" id="months_in_year/1">
    <div class="detail-header">
    <a href="#months_in_year/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">months_in_year(date)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L192" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
    
      <span class="note">(since 1.7.0)</span>
    
      <div class="specs">
          <pre>months_in_year(<a href="Calendar.html#t:date/0">Calendar.date</a>()) :: <a href="Calendar.html#t:month/0">Calendar.month</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Returns the number of months in the given <code class="inline">date</code> year.</p>
<h2 id="months_in_year/1-example" class="section-heading">
  <a href="#months_in_year/1-example" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Example
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">months_in_year</span><span class="p" data-group-id="3202337783-1">(</span><span class="ld">~D[1900-01-13]</span><span class="p" data-group-id="3202337783-1">)</span><span class="w">
</span><span class="mi">12</span></code></pre>
  </section>
</div>
<div class="detail" id="new/4">
  
    <span id="new/3"></span>
  <div class="detail-header">
    <a href="#new/4" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">new(year, month, day, calendar \\ Calendar.ISO)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L219" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>new(<a href="Calendar.html#t:year/0">Calendar.year</a>(), <a href="Calendar.html#t:month/0">Calendar.month</a>(), <a href="Calendar.html#t:day/0">Calendar.day</a>(), <a href="Calendar.html#t:calendar/0">Calendar.calendar</a>()) ::
  {:ok, <a href="#t:t/0">t</a>()} | {:error, <a href="typespecs.html#basic-types">atom</a>()}</pre>
      </div>
  </div>
  <section class="docstring">
<p>Builds a new ISO date.</p>
<p>Expects all values to be integers. Returns <code class="inline">{:ok, date}</code> if each
entry fits its appropriate range, returns <code class="inline">{:error, reason}</code> otherwise.</p>
<h2 id="new/4-examples" class="section-heading">
  <a href="#new/4-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">new</span><span class="p" data-group-id="8754521481-1">(</span><span class="mi">2000</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p" data-group-id="8754521481-1">)</span><span class="w">
</span><span class="p" data-group-id="8754521481-2">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="ld">~D[2000-01-01]</span><span class="p" data-group-id="8754521481-2">}</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">new</span><span class="p" data-group-id="8754521481-3">(</span><span class="mi">2000</span><span class="p">,</span><span class="w"> </span><span class="mi">13</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p" data-group-id="8754521481-3">)</span><span class="w">
</span><span class="p" data-group-id="8754521481-4">{</span><span class="ss">:error</span><span class="p">,</span><span class="w"> </span><span class="ss">:invalid_date</span><span class="p" data-group-id="8754521481-4">}</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">new</span><span class="p" data-group-id="8754521481-5">(</span><span class="mi">2000</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">29</span><span class="p" data-group-id="8754521481-5">)</span><span class="w">
</span><span class="p" data-group-id="8754521481-6">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="ld">~D[2000-02-29]</span><span class="p" data-group-id="8754521481-6">}</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">new</span><span class="p" data-group-id="8754521481-7">(</span><span class="mi">2000</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p" data-group-id="8754521481-7">)</span><span class="w">
</span><span class="p" data-group-id="8754521481-8">{</span><span class="ss">:error</span><span class="p">,</span><span class="w"> </span><span class="ss">:invalid_date</span><span class="p" data-group-id="8754521481-8">}</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">new</span><span class="p" data-group-id="8754521481-9">(</span><span class="mi">2001</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">29</span><span class="p" data-group-id="8754521481-9">)</span><span class="w">
</span><span class="p" data-group-id="8754521481-10">{</span><span class="ss">:error</span><span class="p">,</span><span class="w"> </span><span class="ss">:invalid_date</span><span class="p" data-group-id="8754521481-10">}</span></code></pre>
  </section>
</div>
<div class="detail" id="range/2">
    <div class="detail-header">
    <a href="#range/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">range(first, last)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L104" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
    
      <span class="note">(since 1.5.0)</span>
    
      <div class="specs">
          <pre>range(<a href="Date.html#t:t/0">Date.t</a>(), <a href="Date.html#t:t/0">Date.t</a>()) :: <a href="Date.Range.html#t:t/0">Date.Range.t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Returns a range of dates.</p>
<p>A range of dates represents a discrete number of dates where
the first and last values are dates with matching calendars.</p>
<p>Ranges of dates can be either increasing (<code class="inline">first &lt;= last</code>) or
decreasing (<code class="inline">first &gt; last</code>). They are also always inclusive.</p>
<h2 id="range/2-examples" class="section-heading">
  <a href="#range/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">range</span><span class="p" data-group-id="0618895302-1">(</span><span class="ld">~D[1999-01-01]</span><span class="p">,</span><span class="w"> </span><span class="ld">~D[2000-01-01]</span><span class="p" data-group-id="0618895302-1">)</span><span class="w">
</span><span class="p" data-group-id="0618895302-2">#</span><span class="nc" data-group-id="0618895302-2">DateRange</span><span class="p" data-group-id="0618895302-2">&lt;</span><span class="ld">~D[1999-01-01]</span><span class="p">,</span><span class="w"> </span><span class="ld">~D[2000-01-01]</span><span class="p" data-group-id="0618895302-2">&gt;</span></code></pre>
<p>A range of dates implements the <a href="Enumerable.html"><code class="inline">Enumerable</code></a> protocol, which means
functions in the <a href="Enum.html"><code class="inline">Enum</code></a> module can be used to work with
ranges:</p>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">range</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">Date</span><span class="o">.</span><span class="n">range</span><span class="p" data-group-id="9771129385-1">(</span><span class="ld">~D[2001-01-01]</span><span class="p">,</span><span class="w"> </span><span class="ld">~D[2002-01-01]</span><span class="p" data-group-id="9771129385-1">)</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Enum</span><span class="o">.</span><span class="n">count</span><span class="p" data-group-id="9771129385-2">(</span><span class="n">range</span><span class="p" data-group-id="9771129385-2">)</span><span class="w">
</span><span class="mi">366</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Enum</span><span class="o">.</span><span class="n">member?</span><span class="p" data-group-id="9771129385-3">(</span><span class="n">range</span><span class="p">,</span><span class="w"> </span><span class="ld">~D[2001-02-01]</span><span class="p" data-group-id="9771129385-3">)</span><span class="w">
</span><span class="no">true</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Enum</span><span class="o">.</span><span class="n">reduce</span><span class="p" data-group-id="9771129385-4">(</span><span class="n">range</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="k" data-group-id="9771129385-5">fn</span><span class="w"> </span><span class="c">_date</span><span class="p">,</span><span class="w"> </span><span class="n">acc</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">acc</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k" data-group-id="9771129385-5">end</span><span class="p" data-group-id="9771129385-4">)</span><span class="w">
</span><span class="o">-</span><span class="mi">366</span></code></pre>
  </section>
</div>
<div class="detail" id="to_erl/1">
    <div class="detail-header">
    <a href="#to_erl/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">to_erl(date)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L370" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>to_erl(<a href="Calendar.html#t:date/0">Calendar.date</a>()) :: <a href="http://www.erlang.org/doc/man/calendar.html#type-date">:calendar.date</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Converts the given <code class="inline">date</code> to an Erlang date tuple.</p>
<p>Only supports converting dates which are in the ISO calendar,
or other calendars in which the days also start at midnight.
Attempting to convert dates from other calendars will raise.</p>
<h2 id="to_erl/1-examples" class="section-heading">
  <a href="#to_erl/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">to_erl</span><span class="p" data-group-id="1372896666-1">(</span><span class="ld">~D[2000-01-01]</span><span class="p" data-group-id="1372896666-1">)</span><span class="w">
</span><span class="p" data-group-id="1372896666-2">{</span><span class="mi">2000</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p" data-group-id="1372896666-2">}</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">to_erl</span><span class="p" data-group-id="1372896666-3">(</span><span class="ld">~N[2000-01-01 00:00:00]</span><span class="p" data-group-id="1372896666-3">)</span><span class="w">
</span><span class="p" data-group-id="1372896666-4">{</span><span class="mi">2000</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p" data-group-id="1372896666-4">}</span></code></pre>
  </section>
</div>
<div class="detail" id="to_iso8601/2">
  
    <span id="to_iso8601/1"></span>
  <div class="detail-header">
    <a href="#to_iso8601/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">to_iso8601(date, format \\ :extended)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L347" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>to_iso8601(<a href="Calendar.html#t:date/0">Calendar.date</a>(), :extended | :basic) :: <a href="String.html#t:t/0">String.t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Converts the given <code class="inline">date</code> to
<a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601:2004</a>.</p>
<p>By default, <a href="Date.html#to_iso8601/2"><code class="inline">Date.to_iso8601/2</code></a> returns dates formatted in the “extended”
format, for human readability. It also supports the “basic” format through passing the <code class="inline">:basic</code> option.</p>
<p>Only supports converting dates which are in the ISO calendar,
or other calendars in which the days also start at midnight.
Attempting to convert dates from other calendars will raise an <a href="ArgumentError.html"><code class="inline">ArgumentError</code></a>.</p>
<h3 id="to_iso8601/2-examples" class="section-heading">
  <a href="#to_iso8601/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h3>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">to_iso8601</span><span class="p" data-group-id="9425013278-1">(</span><span class="ld">~D[2000-02-28]</span><span class="p" data-group-id="9425013278-1">)</span><span class="w">
</span><span class="s">&quot;2000-02-28&quot;</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">to_iso8601</span><span class="p" data-group-id="9425013278-2">(</span><span class="ld">~D[2000-02-28]</span><span class="p">,</span><span class="w"> </span><span class="ss">:basic</span><span class="p" data-group-id="9425013278-2">)</span><span class="w">
</span><span class="s">&quot;20000228&quot;</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">to_iso8601</span><span class="p" data-group-id="9425013278-3">(</span><span class="ld">~N[2000-02-28 00:00:00]</span><span class="p" data-group-id="9425013278-3">)</span><span class="w">
</span><span class="s">&quot;2000-02-28&quot;</span></code></pre>
  </section>
</div>
<div class="detail" id="to_string/1">
    <div class="detail-header">
    <a href="#to_string/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">to_string(date)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L243" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>to_string(<a href="Calendar.html#t:date/0">Calendar.date</a>()) :: <a href="String.html#t:t/0">String.t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Converts the given date to a string according to its calendar.</p>
<h3 id="to_string/1-examples" class="section-heading">
  <a href="#to_string/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h3>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">to_string</span><span class="p" data-group-id="2883137724-1">(</span><span class="ld">~D[2000-02-28]</span><span class="p" data-group-id="2883137724-1">)</span><span class="w">
</span><span class="s">&quot;2000-02-28&quot;</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">to_string</span><span class="p" data-group-id="2883137724-2">(</span><span class="ld">~N[2000-02-28 01:23:45]</span><span class="p" data-group-id="2883137724-2">)</span><span class="w">
</span><span class="s">&quot;2000-02-28&quot;</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Date</span><span class="o">.</span><span class="n">to_string</span><span class="p" data-group-id="2883137724-3">(</span><span class="ld">~D[-0100-12-15]</span><span class="p" data-group-id="2883137724-3">)</span><span class="w">
</span><span class="s">&quot;-0100-12-15&quot;</span></code></pre>
  </section>
</div>
<div class="detail" id="utc_today/1">
  
    <span id="utc_today/0"></span>
  <div class="detail-header">
    <a href="#utc_today/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">utc_today(calendar \\ Calendar.ISO)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/calendar/date.ex#L127" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
    
      <span class="note">(since 1.4.0)</span>
    
      <div class="specs">
          <pre>utc_today(<a href="Calendar.html#t:calendar/0">Calendar.calendar</a>()) :: <a href="#t:t/0">t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Returns the current date in UTC.</p>
<h2 id="utc_today/1-examples" class="section-heading">
  <a href="#utc_today/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">date</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">Date</span><span class="o">.</span><span class="n">utc_today</span><span class="p" data-group-id="5566577786-1">(</span><span class="p" data-group-id="5566577786-1">)</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="n">date</span><span class="o">.</span><span class="n">year</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mi">2016</span><span class="w">
</span><span class="no">true</span></code></pre>
  </section>
</div>
        </section>

          <footer class="footer">
        <p>
          <span class="line">
            Built using
            <a href="https://github.com/elixir-lang/ex_doc" title="ExDoc" target="_blank" rel="help noopener">ExDoc</a> (v0.19.1),
          </span>
          <span class="line">
            designed by
            <a href="https://twitter.com/dignifiedquire" target="_blank" rel="noopener" title="@dignifiedquire">Friedel Ziegelmayer</a>.
            </span>
        </p>
      </footer>
    </div>
  </div>
</section>
</div>
  <script src="dist/app-a0c90688fa.js"></script>
  
  </body>
</html>