Python - datetime.now() returns incorrect time

Viewed 11704

I want to store in my data base the time stamp of an operation. The problem is that the time that I get from datetime.datetime.now()is incorrect (I guess it's due to time zone). I tried getting the value in the terminal using python and got the correct result.

import datetime 
datetime.datetime.now()//correct time

However if I print the result during problem execution the output is incorrect, the result is two hours earlier.

Why is it like that, that the terminal gives me the correct time but the program instance isn't, how can I get the correct time in my program?

Edit: The date time from the terminal:

2018-08-30 17:41:04.413187

The date time from program instance:

2018-08-30 14:42:31.761310

Edit:

I noticed that I have this warning when I run the program.

RuntimeWarning: DateTimeField Policy.last_update received a naive datetime (2018-08-30 15:16:23.689896) while time zone support is active.
  RuntimeWarning)
2 Answers

Try this adjusting the number of hours depending on the timezone you are:

import datetime 

datetime.datetime.utcnow()+datetime.timedelta(hours=3)

This works for me:

import pytz
import datetime

timezone = pytz.timezone('Europe/Madrid')
now = datetime.datetime.now(tz = timezone)

install pytz: pip install pytz

get all timezones: print(pytz.all_timezones)

Related