Date Module
The date
module parses dates, and prints them.
The server will normally print dates in its own pre-defined format. It will also parse dates in a few limited formats. However, these operations are for full dates (e.g. January 1, 2020 12:34pm). The server does not print dates in other formats, and does not parse dates in other formats.
The date
module adds that functionality. It allows you to print
dates in almost any format you want. It allows you to parse dates
in almost any format, so long as you know what the fields are, and
how they are defined.
Configuration Settings
- format
-
Formatting of the output string.
The format arguments are the same as for the system
strftime
call. See man strftime
for documentation.
- utc
-
Whether conversions are in UTC or local time.
If utc
is enabled then any conversions will be made
as UTC, not localtime.
ISO format
The core xlat
, %T
returns the request timestamp in ISO
format
including milliseconds. This expansion returns it without the
millisecond component.
Use e.g. %date_iso(request):
xlat expansions
The date
module defines an expansion %date()
When the
expansion is not passed an argument, it returns the current date
printed according to the format
string defined above.
If the argument to %date(…)
is an attribute of date
or
integer
type, the date used will be the time given by the
relevant attribute. If the attributes is of type string
, the
string will be parsed according to the format
configuration,
and a Unix date will be returned, as integer seconds since the epoch.
For example, %date(&Event-Timestamp)
will use the date from the
Event-Timestamp
attribute as the source of the date for printing.
If the input is the string request
, the xlat
will format the
time the current request packet arrived according to the format
string, and return it as a string.
If the input is the string now
, the xlat
will behave as
above, for the current time.
If the input string begins with +
, then the remainder of the
string is interpreted as if the string had been given in the
format
configuration item.
For example %date('+%A')
will return Monday
if today is Monday.
Note that the %
character is special for xlat expansions, and therefore
either has to be "protected" by string quotation, or the %
character has
to be escaped itself, as in %date(+%%A)
In some cases, it is useful for the module to parse dates instead of printing them. In this mode, the format string is ignored. Instead, the input arguments are parsed, and the output is an integer containing the requested value.
The following expansions return integer numbers:
Parameter | Description |
---|---|
%l |
request time in seconds since the epoch. |
%M |
request time microsecond component. |
%c |
current time in seconds since the epoch. |
%C |
current time microsecond component. |
&Attribute-Name |
for string attributes, parse the string according to |