how can I convert date(YYYY, MM, DD) format to YYYY/MM/DD with python?

Question:

I have a JSON that returns a date in the following date format:

datetime(2015, 12, 1)

So the key value from JSON is

'CreateDate': datetime(2015, 1, 1) 

In order to be able to subtract two dates, I need to convert above to date format:

YYYY/MM/DD

so in above case that would become: 2015/12/01

Is there a smart way to do that? Is it at all possible? Or do I really have to parse it as a block of text? I tried using datetime.strptime, but I can’t get it to work.

Asked By: DennisZ

||

Answers:

datetime(2015,12,1).strftime("%Y/%m/%d")

will do the trick for you. A complete python program would look like this.

# import the datetime and date classes from the datetime module   
 from datetime import datetime, date 

# create your datetime(..) instance from your JSON somehow
# The included Python JSON tools do not usually know about date-times, 
# so this may require a special step

# Assume you have a datetime now
dt = datetime(2015,12,1)
# Print it out in your format
print( dt.strftime("%Y/%m/%d") )

Two important details:

  1. You are using just a date in a Python datetime. Nothing wrong with that but just note that the Python datetime module also has a date class
  2. You can enable your JSON encoder/decoder to recognise dates and datetimes automatically but it requires extra work.

Now, to subtract datetimes from each other they should remain as instances of the datetime class. You can not subtract datetimes from each other once they have been formatted as a string.

Once you subtract a Python datetime from an other datetime the result will be an instance of the timedelta class.

from datetime import datetime, timedelta
# time_diff here is a timedelta type
time_diff = datetime(2015,12,1) - datetime(2014,11,1)

Now you can look up the Python timedelta type and extract the days, hours, minutes etc. that you need. Be aware that timedeltas can be a negative if you subtract a later datetime from an earlier one.

Answered By: JimmyNJ

The datetime module has a function for doing this which is pretty easy as shown below

from datetime import datetime

print(datetime(2015,12,1).strftime("%Y/%m/%d"))

Also read more about the module here https://docs.python.org/3/library/datetime.html

Answered By: Fome
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.