ViewHelper Documentation
v:format.dateRange
Date range calculation/formatting ViewHelper
Uses DateTime and DateInterval operations to calculate a range between two DateTimes.
Usages
- As formatter, the ViewHelper can output a string value such as "2013-04-30 - 2013-05-30" where you can configure both the start and end date (or their common) formats as well as the "glue" which binds the two dates together.
- As interval calculator, the ViewHelper can be used with a special "intervalFormat" which is a string used in the constructor method for the DateInterval class - for example, "P3M" to add three months. Used this way, you can specify the start date (or rely on the default "now" DateTime) and specify the "intervalFormat" to add your desired duration to your starting date and use that as end date. Without the "return" attribute, this mode simply outputs the formatted dates with interval deciding the end date.
- When used with the "return" attribute you can specify which type
of data to return:
- if "return" is "DateTime", a single DateTime instance is returned (which is the end date). Use this with a start date to return the DateTime corresponding to "intervalFormat" into the future/past.
- if "return" is a string such as "w", "d", "h" etc. the corresponding counter value (weeks, days, hours etc.) is returned.
- if "return" is an array of counter IDs, for example ["w", "d"], the corresponding counters from the range are returned as an array.
Note about LLL support and array consumers
When used with the "return" attribute and when this attribute is an array, the output becomes suitable for consumption by f:translate, v:l or f:format.sprintf for example - as the "arguments" attribute:
<f:translate key="myDateDisplay"
arguments="{v:format.dateRange(intervalFormat: 'P3W', return: {0: 'w', 1: 'd'})}"
/>
Which if "myDateDisplay" is a string such as "Deadline: %d week(s) and %d day(s)" would output a result such as "Deadline: 4 week(s) and 2 day(s)".
Tip: the values returned by this ViewHelper in both array and single value return modes, are also nicely consumable by the "math" suite of ViewHelpers, for example
v:math.division
would be able to divide number of days by two, three etc. to further divide the date range.
Arguments
start anySimpleType
Start date which can be a DateTime object or a string consumable by DateTime constructor
end anySimpleType
End date which can be a DateTime object or a string consumable by DateTime constructor
intervalFormat string
Interval format consumable by DateInterval
format string
Date format to apply to both start and end date
startFormat string
Date format to apply to start date
endFormat string
Date format to apply to end date
glue string
Glue string to concatenate dates with
spaceGlue boolean
If TRUE glue string is surrounded with whitespace
return anySimpleType
Return type; can be exactly "DateTime" to return a DateTime instance, a string like "w" or "d" to return weeks, days between the two dates - or an array of w, d, etc. strings to return the corresponding range count values as an array.