Useful Constants in Ruby's Date Class
While tying to modify dates in string form, I came across a convenient way to convert months into their numerical values.
For example, say I had the string Aug 20, 2020
and I wanted to convert it into 8-20-2020
.
It’s easy to split the string and add a dash in between each number. But what about Aug
? How do we get the numerical form of Aug
and all the other months?
We could manually create something like a hash that contains months in string and numerical form. But, Ruby already comes with a built-in solution.
In the documentation, I discovered that Ruby’s Date
class comes with two array constants that can help in this situation.
Those constants are MONTHNAMES
and ABBR_MONTHNAMES
.
MONTHNAMES
is an array of the full names of all the months.
|
|
ABBR_MONTHNAMES
is an array of abbreviated month names.
|
|
In my situation, ABBR_MONTHNAMES
will solve my problem since the data I’m parsing contains abbreviated month names.
Now, when parsing Aug 20, 2020
, I can run the following to get a numerical value for Aug
:
|
|
No need to create a hash or array myself, this constant gets the job done.
I noticed both arrays have nil
as their first value. At first I asked “why?”, but it quickly became clear that the nil
values are simply filler to take up index 0
since there is no month with this numerical value.
This was a nice discovery. Ruby continues to make writing code a pleasant experience.