dropWizard
dropWizard

Reputation: 3538

Converting datetime to strptime

I'm pulling a timestamp that looks like this - 2014-02-03T19:24:07Z

I'm trying to calculate the number of days since January 1.

I was able to convert it to datetime using

yourdate = dateutil.parser.parse(timestamp)

But now I'm trying to parse it and grab individual elements, such as the month & day.

Is there a way to convert it to strptime so I can select each element?

Upvotes: 2

Views: 1302

Answers (5)

Bryan
Bryan

Reputation: 17693

Another way to solve without the dateutil module:

import datetime

# start date for comparision
start = datetime.date(2014, 1, 1)

# timestamp as string
datefmt = "%Y-%m-%dT%H:%M:%SZ"
current = "2014-02-03T19:24:07Z"

# convert timestamp string to date, dropping time
end = datetime.datetime.strptime(current, datefmt).date()

# compare dates and get number of days from timedelta object
days = (end - start).days

This assumes you don't care about time (including timezones).

Upvotes: 0

Josh Smeaton
Josh Smeaton

Reputation: 48720

Just to be a little more complete:

>>> from dateutil.parser import parse
>>> from datetime import datetime
>>> import pytz
>>> d = parse('2014-02-03T19:24:07Z')
>>> other = datetime(year=2014, month=1, day=1, tzinfo=pytz.utc)
>>> (d-other).days
33

You have to make sure the other datetime is timezone aware if you're creating it with datetime as opposed to the datetime you're parsing with dateutil.

Upvotes: 2

ngulam
ngulam

Reputation: 1075

if you want to calculate:

import dateutil.parser
yourdate = dateutil.parser.parse('2014-02-03T19:24:07Z')
startdate = dateutil.parser.parse('2014-01-01T00:00:00Z')
print (yourdate - startdate)

Upvotes: 1

Jan Spurny
Jan Spurny

Reputation: 5527

There's no need for converting. The resulting datetime.datetime object has all necessary properties which you can access directly. For example:

>>> import dateutil.parser
>>> timestamp="2014-02-03T19:24:07Z"
>>> yourdate = dateutil.parser.parse(timestamp)
>>> yourdate.day
3
>>> yourdate.month
2

See: https://docs.python.org/2/library/datetime.html#datetime-objects

Upvotes: 1

falsetru
falsetru

Reputation: 369074

Just access the month, day using year, month, day attributes..

>>> import dateutil.parser
>>> yourdate = dateutil.parser.parse('2014-02-03T19:24:07Z')
>>> yourdate.year
2014
>>> yourdate.month
2
>>> yourdate.day
3

Upvotes: 4

Related Questions