27 lines
686 B
Python
27 lines
686 B
Python
"""Utility functions and classes for the stix2 library."""
|
|
|
|
import datetime as dt
|
|
|
|
import pytz
|
|
|
|
# Sentinel value for fields that should be set to the current time.
|
|
# We can't use the standard 'default' approach, since if there are multiple
|
|
# timestamps in a single object, the timestamps will vary by a few microseconds.
|
|
NOW = object()
|
|
|
|
|
|
def get_timestamp():
|
|
return dt.datetime.now(tz=pytz.UTC)
|
|
|
|
|
|
def format_datetime(dttm):
|
|
# TODO: how to handle naive datetime
|
|
|
|
# 1. Convert to UTC
|
|
# 2. Format in ISO format
|
|
# 3. Strip off "+00:00"
|
|
# 4. Add "Z"
|
|
|
|
# TODO: how to handle timestamps with subsecond 0's
|
|
return dttm.astimezone(pytz.utc).isoformat()[:-6] + "Z"
|