pyrfc3339.generator – Generate RFC 3339 timestamps

pyrfc3339.generator.generate(dt, utc=True, accept_naive=False, microseconds=False)

Generate an RFC 3339-formatted timestamp from a datetime.datetime.

>>> from datetime import datetime
>>> generate(datetime(2009,1,1,12,59,59,0,pytz.utc))
'2009-01-01T12:59:59Z'

The timestamp will use UTC unless utc=False is specified, in which case it will use the timezone from the datetime.datetime’s tzinfo parameter.

>>> eastern = pytz.timezone('US/Eastern')
>>> dt = eastern.localize(datetime(2009,1,1,12,59,59))
>>> generate(dt)
'2009-01-01T17:59:59Z'
>>> generate(dt, utc=False)
'2009-01-01T12:59:59-05:00'

Unless accept_naive=True is specified, the datetime must not be naive.

>>> generate(datetime(2009,1,1,12,59,59,0))
Traceback (most recent call last):
...
ValueError: naive datetime and accept_naive is False
>>> generate(datetime(2009,1,1,12,59,59,0), accept_naive=True)
'2009-01-01T12:59:59Z'

If accept_naive=True is specified, the datetime is assumed to be UTC. Attempting to generate a local timestamp from a naive datetime will result in an error.

>>> generate(datetime(2009,1,1,12,59,59,0), accept_naive=True, utc=False)
Traceback (most recent call last):
...
ValueError: cannot generate a local timestamp from a naive datetime