-
Bug
-
Resolution: Not a bug
-
Minor
-
None
-
4.3 regressions, 4.4 regressions, 4.5 regressions, 5.0 regressions
The days parameter of the following date interval format strings is incorrect:
- dateintervalmoday
- dateintervalmodayfull
- dateintervalmodayhr
- dateintervalmodayhrfull
- dateintervalmodayhrmin
- dateintervalmodayhrminfull
- dateintervalmodayhrminsec
- dateintervalmodayhrminsecfull
- dateintervalmodayhrsec
- dateintervalmodayhrsecfull
- dateintervalyrmoday
- dateintervalyrmodayfull
- dateintervalyrmodayhr
- dateintervalyrmodayhrfull
- dateintervalyrmodayhrmin
- dateintervalyrmodayhrminfull
- dateintervalyrmodayhrminsec
- dateintervalyrmodayhrminsecfull
- dateintervalyrmodayhrsec
- dateintervalyrmodayhrsecfull
- dateintervalyrmodaymin
- dateintervalyrmodayminfull
- dateintervalyrmodayminsec
- dateintervalyrmodayminsecfull
The number of days is specified using the %a parameter, which returns the "Total number of days" according to PHP documentation found at: https://www.php.net/manual/en/dateinterval.format.php.
The correct parameter should be %d, which is the number of days.
Example: With the %a parameter, the number of days parameter in the date intervals is rendering the total number of days in the interval, which is misleading:
1 years 11 months 729 days 16 hours 12 minutes 43 seconds |
By replacing the %a with %d in the above-mentioned strings of the langconfig.php file, the date interval will be correctly rendered like:
1 years 11 months 29 days 16 hours 12 minutes 43 seconds |
The following strings should be removed because they cannot be rendered correctly as an interval because PHP does not support formatting intervals using the number of days, hours, minutes, or seconds since the beginning of the year, month, or day. As a result, these formats produce misleading output.
For example, the interval:
1 years 43 seconds
is rendered incorrectly. If it were to be rendered accurately (i.e., as the number of seconds since the start of the year), it would appear as:
1 years 102203 seconds
Affected Strings
The following interval format strings should be removed:
- dateintervaldayhrsec
- dateintervaldayhrsecfull
- dateintervaldaymin
- dateintervaldayminfull
- dateintervaldayminsec
- dateintervaldayminsecfull
- dateintervaldaysec
- dateintervaldaysecfull
- dateintervalhrsec
- dateintervalhrsecfull
- dateintervalmodayhrsec
- dateintervalmodayhrsecfull
- dateintervalmodaymin
- dateintervalmodaymin
- dateintervalmodayminfull
- dateintervalmodayminfull
- dateintervalmodayminsec
- dateintervalmodayminsec
- dateintervalmodayminsecfull
- dateintervalmodayminsecfull
- dateintervalmodaysec
- dateintervalmodaysec
- dateintervalmodaysecfull
- dateintervalmodaysecfull
- dateintervalmohrsecfull
- dateintervalmomin
- dateintervalmominfull
- dateintervalmominsec
- dateintervalmominsecfull
- dateintervalmosec
- dateintervalmosecfull
- dateintervalyrday
- dateintervalyrdayfull
- dateintervalyrdayhr
- dateintervalyrdayhrfull
- dateintervalyrdayhrmin
- dateintervalyrdayhrminfull
- dateintervalyrdayhrminsec
- dateintervalyrdayhrminsecfull
- dateintervalyrdayhrsec
- dateintervalyrdayhrsecfull
- dateintervalyrdaymin
- dateintervalyrdayminfull
- dateintervalyrdayminsec
- dateintervalyrdayminsecfull
- dateintervalyrdaysec
- dateintervalyrdaysecfull
- dateintervalyrhr
- dateintervalyrhrfull
- dateintervalyrhrmin
- dateintervalyrhrminfull
- dateintervalyrhrminsec
- dateintervalyrhrminsecfull
- dateintervalyrhrsec
- dateintervalyrhrsecfull
- dateintervalyrmin
- dateintervalyrminfull
- dateintervalyrminsec
- dateintervalyrminsecfull
- dateintervalyrmodayhrsec
- dateintervalyrmodayhrsecfull
- dateintervalyrmodaymin
- dateintervalyrmodayminfull
- dateintervalyrmodayminsec
- dateintervalyrmodayminsecfull
- dateintervalyrmodaysec
- dateintervalyrmodaysec
- dateintervalyrmodaysecfull
- dateintervalyrmodaysecfull
- dateintervalyrmohr
- dateintervalyrmohrfull
- dateintervalyrmohrmin
- dateintervalyrmohrminfull
- dateintervalyrmohrminsec
- dateintervalyrmohrminsecfull
- dateintervalyrmohrsec
- dateintervalyrmohrsecfull
- dateintervalyrmomin
- dateintervalyrmominfull
- dateintervalyrmominsec
- dateintervalyrmominsecfull
- dateintervalyrmosec
- dateintervalyrmosecfull
- dateintervalyrsec
- dateintervalyrsecfull
These interval formats rely on unsupported logic and result in output that misrepresents the actual time interval.
Intervals are composed of years, months, days, hours, minutes, and seconds. You can start and end at any point in this sequence, but you must include all intermediate units - none can be skipped.