Edward Baran
Edward Baran

Reputation: 31

datetime.strptime formatting

My datetime in my CSV file is like the following:

2011/1/1 0:00
2011/1/1 0:30
2011/1/1 1:00

when I run:

date = datetime.strptime(row[0], '%Y/%m/%d %H:%M')

I get datetime output as:

[datetime.datetime(2011, 1, 1, 0, 0)]
[datetime.datetime(2011, 1, 1, 0, 30)]

How can i format it to the original datetime?

Upvotes: 3

Views: 4184

Answers (3)

user10443822
user10443822

Reputation:

What you are currently doing is creating a datetime object from a string and formatter as shown here. Likely somewhere in your code you put this object in a list and referenced it. Python doesn't know that you want to print the container(the list) with it in a certain string format.

If I'm understanding your question you want to print/return the element and not the container. Shown below:

import datetime

l = []
today = datetime.date.today()
l.append(today)
#what you have
print(l)
#addressing just the first element
print(l[0])

Upvotes: 1

colidyre
colidyre

Reputation: 4666

You have already parsed a string into a datetime object. This is done by using datetime.datetime.strptime(). To format the object back into a string you can use the same syntax but using method datetime.datetime.strftime(), e.g.:

date.strftime('%Y/%m/%d %H:%M')

See also documentation.

If you want exactly your input string (without leading 0), you can put a hyphen between percentage operator and directive character where necessary, e.g.:

date.strftime('%Y/%-m/%-d %-H:%M')

This is well explained in: Python strftime - date without leading 0 but it is platform dependent.

Upvotes: 2

Chandella07
Chandella07

Reputation: 2117

Try printing date in string format:

from datetime import datetime    

row = "2011/1/1 0:30"
date = datetime.strptime(row, '%Y/%m/%d %H:%M')
print str(date)

output:

'2011-01-01 00:30:00'

Upvotes: 1

Related Questions