I built a site recently because I was tired of poring over the Ruby strftime documentation every time I wanted to print a nicely formatted date. This led to registering the domain timeformattingisannoying.com and building a small Volt app to help me remember and practice time formatting string syntax.
When I wrote it originally, it didn’t work outside Chrome. All the formatted time strings were full of
undefined where the datetime information should have been. I assumed this was because Firefox, etc, haven’t implemented date fields yet. But when I decided to adapt it to work with other browsers, I discovered that wasn’t the problem. I fiddled with Modernizr until I got the site to do basic text fields for browsers without HTML5 date/time fields implemented, and the errors still came up.
When that happened, I finally decided to fire up an even simpler Volt app to fiddle with time string parsing and formatting, and I discovered that Chrome (and Chromium browsers) are the only ones in which
Time.parse could handle a string of the format “hours:minutes year-month-day”, which was what I was using. So I fiddled with
Time.parse until I finally figured out that all browsers can handle parsing strings of the format “month_name day_of_month hours:minutes:seconds year”. As of now, the time parsing and formatting works on all the browsers I’ve tested it on.
I checked the Opal GitHub repo, and it looks like
new Date(Date.parse(str)), so I figured the discrepancy must be in
but in Firefox:
I don’t know if anyone else is likely to run into this, but it was good for me to know.