Month v2.1.0 Month View Source
A data structure and a set of methods for those who work exclusively with months and month ranges.
Please check the documentation for Month
as well as Month.Period
and
Month.Range
, which cover some extra use cases.
Using the ~M sigil
To use the ~M
sigil, please import Month.Sigils
like so:
defmodule SomeModule do
import Month.Sigils
# ...
end
Then you can do
date = ~M[2000-01]
Examples
iex> ~M[2019-03].month
3
iex> ~M[2019-03].year
2019
iex> range = Month.Range.new!(~M[2019-01], ~M[2019-03])
#Month.Range<~M[2019-01], ~M[2019-03]>
iex> range.months
[~M[2019-01], ~M[2019-02], ~M[2019-03]]
Link to this section Summary
Functions
Adds or subtracts months from given month
Same as add/2
but returns result or throws
Compares two months and returns if first one is greater (after), equal or less (before) the second one
Returns list of dates in a month
Returns a %Month{}
representing current month, according to the given timezone
Subtracts the given positive number of months from the month
Same as subtract/2
but either returns result or throws
Converts given %Month{}
to a string
Returns a %Month{}
representing current month, according to the Etc/UTC timezone
Same as utc_now/0
but returns result directly or throws
Link to this section Types
Link to this section Functions
add(month, num_months) View Source
Adds or subtracts months from given month.
You can pass a negative number of months to subtract.
Examples
iex> {:ok, month} = Month.new(2019, 3)
{:ok, ~M[2019-03]}
iex> Month.add(month, 3)
{:ok, ~M[2019-06]}
add!(month, num_months) View Source
Same as add/2
but returns result or throws.
compare(a, b) View Source
Compares two months and returns if first one is greater (after), equal or less (before) the second one.
Examples
iex> Month.compare(~M[2020-03], ~M[2019-12])
:gt
dates(date) View Source
Returns list of dates in a month.
Examples
iex> Month.dates(~M[2019-02])
[~D[2019-02-01], ~D[2019-02-02], ~D[2019-02-03], ~D[2019-02-04], ~D[2019-02-05],
~D[2019-02-06], ~D[2019-02-07], ~D[2019-02-08], ~D[2019-02-09], ~D[2019-02-10],
~D[2019-02-11], ~D[2019-02-12], ~D[2019-02-13], ~D[2019-02-14], ~D[2019-02-15],
~D[2019-02-16], ~D[2019-02-17], ~D[2019-02-18], ~D[2019-02-19], ~D[2019-02-20],
~D[2019-02-21], ~D[2019-02-22], ~D[2019-02-23], ~D[2019-02-24], ~D[2019-02-25],
~D[2019-02-26], ~D[2019-02-27], ~D[2019-02-28]]
new(map) View Source
Creates a new Month
struct, using either year/month or another
struct that has year
and month
fields, such as Date
or DateTime
.
new(year, month) View Source
new!(map) View Source
Sames as new/2
but returns result or throws.
new!(year, month) View Source
now(tz) View Source
Returns a %Month{}
representing current month, according to the given timezone.
This requires Elixir 1.8+ and a configured timezone database (such as tzdata
).
Examples
iex> Month.now("America/New_York")
{:ok, ~M[2019-03]}
now!(tz) View Source
Same as now/1
but returns result directly or throws.
subtract(month, num_months) View Source
Subtracts the given positive number of months from the month.
Same as add/2
when you give it a negative number of months.
Examples
iex> Month.subtract(~M[2019-03], 3)
{:ok, ~M[2018-12]}
subtract!(month, num_months) View Source
Same as subtract/2
but either returns result or throws.
to_string(map) View Source
Converts given %Month{}
to a string.
Examples
iex> Month.to_string(~M[2019-03])
"2019-03"
utc_now() View Source
Returns a %Month{}
representing current month, according to the Etc/UTC timezone.
utc_now!() View Source
Same as utc_now/0
but returns result directly or throws.