pdstools.utils.cdh_utils._dates

Date and time helpers for Pega-formatted timestamps.

Functions

parse_pega_date_time_formats(→ polars.Expr)

Parses Pega DateTime formats.

from_prpc_date_time(→ datetime.datetime | str)

Convert from a Pega date-time string.

to_prpc_date_time(→ str)

Convert to a Pega date-time string

_get_start_end_date_args(data[, start_date, end_date, ...])

Module Contents

parse_pega_date_time_formats(timestamp_col='SnapshotTime', timestamp_fmt: str | None = None, timestamp_dtype: polars._typing.PolarsTemporalType = pl.Datetime) polars.Expr

Parses Pega DateTime formats.

Supports commonly used formats:

  • “%Y-%m-%d %H:%M:%S”

  • “%Y%m%dT%H%M%S.%f %Z”

  • “%d-%b-%y”

  • “%d%b%Y:%H:%M:%S”

  • “%Y%m%d”

Removes timezones, and rounds to seconds, with a ‘ns’ time unit.

In the implementation, the last expression uses timestamp_fmt or %Y. This is a bit of a hack, because if we pass None, it tries to infer automatically. Inferring raises when it can’t find an appropriate format, so that’s not good.

Parameters:
  • timestampCol (str, default = 'SnapshotTime') – The column to parse

  • timestamp_fmt (str, default = None) – An optional format to use rather than the default formats

  • timestamp_dtype (PolarsTemporalType, default = pl.Datetime) – The data type to convert into. Can be either Date, Datetime, or Time.

Return type:

polars.Expr

from_prpc_date_time(x: str, return_string: bool = False, use_timezones: bool = True) datetime.datetime | str

Convert from a Pega date-time string.

Parameters:
  • x (str) – String of Pega date-time

  • return_string (bool, default=False) – If True it will return the date in string format. If False it will return in datetime type

  • use_timezones (bool)

Returns:

The converted date in datetime format or string.

Return type:

datetime.datetime | str

Examples

>>> fromPRPCDateTime("20180316T134127.847 GMT")
>>> fromPRPCDateTime("20180316T134127.847 GMT", True)
>>> fromPRPCDateTime("20180316T184127.846")
>>> fromPRPCDateTime("20180316T184127.846", True)
to_prpc_date_time(dt: datetime.datetime) str

Convert to a Pega date-time string

Parameters:
Returns:

A string representation in the format used by Pega

Return type:

str

Examples

>>> toPRPCDateTime(datetime.datetime.now())
_get_start_end_date_args(data: polars.Series | polars.LazyFrame | polars.DataFrame, start_date: datetime.datetime | None = None, end_date: datetime.datetime | None = None, window: int | datetime.timedelta | None = None, datetime_field='SnapshotTime')
Parameters: