ConvertUTCEpochTimeToTimeStamp

This transformer convert the Epoch or UTC timestamp to desired stamp.

python · Community Common Scripts

Source

import demistomock as demisto  # noqa: F401
from CommonServerPython import *  # noqa: F401


from datetime import datetime, timedelta
from dateutil import parser
import pytz


def convert_utctime_with_utc_offset(timestamp, time_format, utc_offset):
    timedelta_data = utc_offset.strip("+").split(":")
    converted_datetime = (timestamp + timedelta(hours=int(timedelta_data[0]), minutes=int(timedelta_data[1]))).strftime(
        time_format
    )
    return converted_datetime


def convert_utctime_with_timezone(timestamp, time_format, timezone):
    required_timezone = pytz.timezone(timezone)

    timedelta_data = (timestamp.astimezone(required_timezone)).utcoffset()
    timedelta_data = (str(timedelta_data)).split(":")
    converted_datetime = (timestamp + timedelta(hours=int(timedelta_data[0]), minutes=int(timedelta_data[1]))).strftime(
        time_format
    )
    return converted_datetime


def epochtime_to_utctime(epoch_time):
    # check the epcoh time is in millisecond,A epoech timestamp that is in milliseconds will have a length of 13
    if len(str(epoch_time)) == 13:
        time_stamp = datetime.fromtimestamp((int(epoch_time) / 1000), timezone.utc)
    elif len(str(epoch_time)) > 13:
        converted_epoch_time = str(epoch_time)
        updated_epoch_time = converted_epoch_time[0:13]
        time_stamp = datetime.fromtimestamp((int(updated_epoch_time) / 1000), timezone.utc)
    else:
        time_stamp = datetime.fromtimestamp(int(epoch_time), timezone.utc)

    converted_timestamp = time_stamp.strftime("%Y-%m-%d %H:%M:%S")

    return converted_timestamp


def datetime_conversions(date_timestamp, time_format, utc_offset, timezone):
    if utc_offset is not None:
        return_results(convert_utctime_with_utc_offset(date_timestamp, time_format, utc_offset))
    elif timezone is not None:
        return_results(convert_utctime_with_timezone(date_timestamp, time_format, timezone))
    else:
        raise DemistoException("Provide utcoffset or timezone to convert")


def main():
    """Input Arguments"""
    timestamp_value = demisto.args().get("value")

    time_format = demisto.args().get("format")
    utc_offset = demisto.args().get("utcoffset")
    timezone = demisto.args().get("timezone")

    try:
        if isinstance(timestamp_value, int):
            utc_time = epochtime_to_utctime(timestamp_value)
            date_timestamp = parser.parse(utc_time)
            datetime_conversions(date_timestamp, time_format, utc_offset, timezone)
        elif isinstance(timestamp_value, str):
            date_timestamp = parser.parse(timestamp_value)
            datetime_conversions(date_timestamp, time_format, utc_offset, timezone)
        else:
            raise DemistoException("Please select the timestamptype argument")
    except Exception as e:
        return_error(f"Failed to execute ConvertUTCEpochTimeToTimeStamp. Error: {str(e)}")


if __name__ in ("__main__", "__builtin__", "builtins"):
    main()