Quantcast
Channel: Issues for Drupal core
Viewing all articles
Browse latest Browse all 291486

DateFormatter::formatInterval is deeply flawed

$
0
0

DateFormatter::formatInterval is really flawed, and how it's being used is also flawed.

It is purporting to format an interval (number of seconds) as a "time ago". But the way it's doing this is:
- Assigning a definite number of seconds to a year, month [actually 30 days in seconds], week, day, hour, minute, and second. This is just wrong for a year or a month; OK for the others.
- Going down the list and comparing the input interval to these values, and using that for formatting.

Some examples of how this goes wrong:
- An interval that's 35 days long, but really represents the interval between May 20 and June 24. This function will say the interval is 1 month and 5 days, but any reasonable person would say it's actually 1 month and 4 days.
- An interval of 35 days, but really represents the interval between Feb 20 and Mar 27. This function will say it is 1 month and 4 days, but it's actually 1 month and 7 days.
- An interval that's from Jan 1 2012 to Jan 1 2013 (366 days), this function will say is a year and a day, but it's really a year.

So. Really, if you want to format an interval correctly, what you need to do is input the two date/time objects you are comparing. You can't do it by inputting a number of seconds, without considering the context of the actual start/end dates, and expect it to be anything reasonable. This function is flawed and meaningless, and needs to be replaced by something more correct.

Date/time stuff is hard...


Viewing all articles
Browse latest Browse all 291486

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>