DateStringToISOFormat
This is a thin wrapper around the `dateutil.parser.parse` function. It will parse a string containing a date/time stamp and return it in ISO 8601 format.
- Type
- python
- Pack
- FiltersAndTransformers
Source
from datetime import UTC
import demistomock as demisto
from dateutil.parser import ParserError, parse # type: ignore[attr-defined]
def parse_datestring_to_iso(
date_value: str, day_first: bool, year_first: bool, fuzzy: bool, add_utc_timezone: bool = False
) -> str:
try:
datetime_obj = parse(date_value, dayfirst=day_first, yearfirst=year_first, fuzzy=fuzzy)
if add_utc_timezone and not datetime_obj.tzinfo:
datetime_obj = datetime_obj.replace(tzinfo=UTC)
return datetime_obj.isoformat()
except ParserError as e:
demisto.error(f"ParserError occurred: {e}\n Returning the original date string.")
date_string = date_value
return date_string
def main():
args = demisto.args()
date_value = args.get("value")
day_first = args.get("dayfirst", "True").lower() == "true"
year_first = args.get("yearfirst", "False").lower() == "true"
fuzzy = args.get("fuzzy", "True").lower() == "true"
add_utc_timezone = args.get("add_utc_timezone", "true").lower() == "true"
iso_string = parse_datestring_to_iso(date_value, day_first, year_first, fuzzy, add_utc_timezone)
demisto.results(iso_string)
# python2 uses __builtin__ python3 uses builtins
if __name__ in ("__builtin__", "builtins", "__main__"):
main()
README
This is a thin wrapper around the dateutil.parser.parse function. It will parse a string containing a date/time stamp and return it in ISO 8601 format.
Script Data
| Name | Description |
|---|---|
| Script Type | python3 |
| Tags | transformer, date |
| Cortex XSOAR Version | 5.0.0 |
Inputs
| Argument Name | Description |
|---|---|
| value | Date value to convert. |
| dayfirst | Whether to interpret the first value in an ambiguous 3-integer date (e.g. 01/05/09) as the day (``True``) or month (``False``). If ``yearfirst`` is set to ``True``, this distinguishes between YDM and YMD. |
| yearfirst | Whether to interpret the first value in an ambiguous 3-integer date (e.g. 01/05/09) as the year. If ``True``, the first number is taken to be the year, otherwise the last number is taken to be the year. |
| fuzzy | Whether to allow fuzzy parsing, allowing for string like “Today is January 1, 2047 at 8:21:00AM”. |
| add_utc_timezone | Whether to add UTC timezone to the date string returned in case offset-naive date was provided as input. |
Outputs
There are no outputs for this script.
Script Examples
Example command
!DateStringToISOFormat value="'05-11-2929'" dayfirst="true" yearfirst="true" fuzzy="true" add_utc_timezone="false"
Context Example
{}
Human Readable Output
2929-11-05T00:00:00